我需要从二进制数据流中提取一些数字值。 下面的代码为我工作,但可以肯定的是,在python中有更合适的方法可以做到这一点。尤其是我在努力寻找一种更好的方法来遍历数组并从缓冲区中获取4字节作为字节数组的工作很多。
对我有什么提示吗?
outfile = io.BytesIO()
outfile.writelines(some binary data stream)
buf = outfile.getvalue()
blen = int(len(buf) / 4 );
for i in range(blen):
a = bytearray([0,0,0,0])
a[0] = buf[i*4]
a[1] = buf[i*4+1]
a[2] = buf[i*4+2]
a[3] = buf[i*4+3]
data = struct.unpack('<l', a)[0]
do something with data
答案 0 :(得分:0)
在我看来,您的问题和随附的伪代码有些模糊,但是这里有些东西使用buf
的切片来获取所需的每4个字节的组-因此,如果没有别的话,它至少会更简洁一些(假设我已经正确解释了您的要求):
import io
import struct
outfile = io.BytesIO()
outfile.writelines([b'\x00\x01\x02\x03',
b'\x04\x05\x06\x07'])
buf = outfile.getvalue()
for i in range(0, len(buf), 4):
data = struct.unpack('<l', buf[i:i+4])[0]
print(hex(data))
输出:
0x3020100
0x7060504