gpt4 book ai didi

python - 从文件中读取和存储任意字节长度的整数

转载 作者:太空狗 更新时间:2023-10-30 03:05:37 28 4
gpt4 key购买 nike

我试图通过在 numpy 中进行解析/数据积累来加速我去年编写的二进制文件解析器。 numpy 定义自定义数据结构并将二进制文件中的数据插入其中的能力看起来像我需要的,除了这些文件中的某些字段是“非标准”长度(例如 6 字节)的无符号整数。由于我使用的是 Python 2.7,因此我制作了自己的 int.from_bytes 模拟版本来处理这些字段,但如果有任何方法可以在 numpy 中将这些字段本地读取为整数,那显然会更快更可取。

最佳答案

Numpy 不支持任意字节长度的整数,使用 ctypes 位域会比它的值(value)更麻烦。

我建议使用矢量化切片将您的数据转换为下一个更高标准大小的整数:

buf = "000000111111222222"
a = np.ndarray(len(buf), np.dtype('>i1'), buf)
e = np.zeros(len(buf) / 6, np.dtype('>i8'))
for i in range(3):
e.view(dtype='>i2')[i + 1::4] = a.view(dtype='>i2')[i::3]
[hex(x) for x in e]

关于python - 从文件中读取和存储任意字节长度的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11508010/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com