wpk*_*kzz 3 parsing binaryfiles julia
我试图打开一个我对其内部结构有一些了解的二进制文件,并在 Julia 中正确地重新解释它。假设我可以通过以下方式加载它:
arx=open("../axonbinaryfile.abf", "r")
databin=read(arx)
close(arx)
Run Code Online (Sandbox Code Playgroud)
数据作为 UInt8 数组加载,我猜是字节。在前 4 个中,我可以执行一个简单的Char转换并且它有效:
head=databin[1:4]
map(Char, head)
4-element Array{Char,1}:
'A'
'B'
'F'
' '
Run Code Online (Sandbox Code Playgroud)
然后碰巧在位置 13-16 是一个等待解释的 32 个字节的整数。我该怎么做?我试过reinterpret()和Int32作为功能,但无济于事。
您可以使用reinterpret(Int32, databin[13:16])[1]. 最后一个[1]是必需的,因为reinterpret返回给你一个视图。
现在注意read支持类型传递。因此,如果您首先从文件中读取 12 个字节的数据,例如这样read(arx, 12),然后运行,read(arx, Int32)您将获得所需的数字,而无需进行任何转换或向量分配。
最后观察一下Char在你的代码中执行的转换是将一个 Unicode 数字转换为一个字符。我不确定这是否正是您想要的(也许是)。例如,如果读入的第一个字节具有值,200您将获得:
julia> Char(200)
'È': Unicode U+00c8 (category Lu: Letter, uppercase)
Run Code Online (Sandbox Code Playgroud)
编辑另一条评论是,当您转换为Int324 个字节时,您应该确保检查它是否应该编码为大端或小端(请参阅ENDIAN_BOM常量和ntoh, hton, ltoh,htol函数)
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |