parsing - 在 Julia 1.x.x 中解析无符号整数数组

标签 parsing julia binaryfiles

我正在尝试打开一个我对其内部结构有一定了解的二进制文件,并在 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 作为函数,但无济于事。

最佳答案

您可以使用 reinterpret(Int32, databin[13:16])[1]。最后一个 [1] 是必需的,因为 reinterpret 会返回一个 View 。

现在请注意,read 支持类型传递。因此,如果您首先从文件中读取 12 个字节的数据,例如像这样 read(arx, 12) 然后运行 ​​read(arx, Int32) 您将获得所需的数字,而无需进行任何转换或向量分配。

最后观察到 Char 在您的代码中所做的转换是将 Unicode 数字转换为字符。我不确定这是否正是您想要的(也许是)。例如,如果读入的第一个字节的值为 200,您将得到:

julia> Char(200)
'È': Unicode U+00c8 (category Lu: Letter, uppercase)

EDIT 还有一条评论是,当您转换为 4 字节的 Int32 时,您应该确保检查它是否应该被编码为 big-endian 或 little -endian(参见 ENDIAN_BOM 常量和 ntohhtonltohhtol 函数)

关于parsing - 在 Julia 1.x.x 中解析无符号整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55271083/

相关文章:

Python:读取带有日期/时间的二进制文件

c# - 读取 SEGY 文件中的 400 字节二进制文件头

c - 如何解决2+2和2++2冲突

python - 如何使用 Universal Feed Parser 删除 html 标签?

julia - 如何在 Gadfly.jl 中添加自定义颜色图?

julia - Julia 中的工作人员和进程数量

julia - 如何在 Julia 中使用 map 来模拟嵌套列表理解?

c - 使用 fwrite 将由标记分隔的多个字符串打印到二进制文件中

java - 使用 PDFBox 解析 PDF 文件(尤其是表格)

javascript - 在javascript中将并行字符串化(序列化)到JSON