parsing - 在 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
作为功能,但无济于事。
解决方案
您可以使用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)
编辑还有一条评论是,当您转换为Int32
4 个字节时,您应该确保检查它是否应该编码为大端或小端(请参阅ENDIAN_BOM
常量和ntoh
、、、、函数)hton
ltoh
htol
推荐阅读
- swift - 如何同时从firebase获取数据的第一级和第二级数据?
- c++ - 可以返回兄弟对象的函数的自动返回类型
- nativescript - 创建相机检测对象
- java - 在层次结构中为每个类创建一个对象实例
- javascript - 我可以在 Node 中的 HTML 文件上运行类似 document.getElementById() 的 javascript 吗?
- spring - 如何从 MockMVC 获取 HTML?
- javascript - 鼠标控制不适用于对象移动。面料 Js
- c# - 应用程序在 webBrowser 线程中被阻止
- sql - 是否可以针对特定的表变量“值”进行优化?
- django - 我想知道django是否可以动态添加html标签,就像javascrip一样