首页 > 解决方案 > 在 Julia 1.xx 中解析无符号整数数组

问题描述

我正在尝试打开一个我对其内部结构有所了解的二进制文件,并在 Julia 中正确地重新解释它。假设我已经可以通过以下方式加载它:

arx=open("../axonbinaryfile.abf", "r")  
databin=read(arx)  
close(arx)

数据作为 UInt8 数组加载,我猜是字节。在前 4 个中,我可以执行一个简单的Char转换并且它可以工作:

head=databin[1:4]
map(Char, head)

4-element Array{Char,1}:
 'A'
 'B'
 'F'
 ' '

然后碰巧在位置 13-16 是一个等待解释的 32 个字节的整数。我该怎么做?我已经尝试过reinterpret()Int32作为功能,但无济于事。

标签: parsingjuliabinaryfiles

解决方案


您可以使用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)

编辑还有一条评论是,当您转换为Int324 个字节时,您应该确保检查它是否应该编码为大端或小端(请参阅ENDIAN_BOM常量和ntoh、、、、函数)htonltohhtol


推荐阅读