我试图通过在 numpy 中进行解析/数据积累来加速我去年编写的二进制文件解析器。numpy 能够定义自定义数据结构并将数据从二进制文件中提取到它们中,这看起来像我需要的,除了这些文件中的某些字段是“非标准”长度(例如 6 字节)的无符号整数。由于我使用的是 Python 2.7,因此我制作了自己的 int.from_bytes 模拟版本来处理这些字段,但是如果有任何方法可以在 numpy 中将这些字段本地读取为整数,那显然会更快且更可取。
我有一个二进制文件,其记录结构为400 24位有符号大端整数,后跟16位大端符号短路.我想要做的是:
from numpy import dtype , fromfile
record_dtype = dtype([('samples','>i3',(400,)),('marker','>i2')])
data = fromfile('binary_file.dat',dtype=record_dtype)
Run Code Online (Sandbox Code Playgroud)
不幸的是,我得到的是:
TypeError: data type not understood
Run Code Online (Sandbox Code Playgroud)
回应'> i3'.如何定义dtype以24位二进制数读取?