python - 如何使用字节数组获取多个 32 位值?
问题描述
我需要从二进制数据流中提取一些数值。下面的代码对我有用,但可以肯定的是,在 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
解决方案
在我看来,您的问题和随附的伪代码有些模糊,但这里有一些使用切片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
推荐阅读
- sap-cloud-sdk - 使用 S4HANA 可扩展服务 - VDM 方法或其他方式
- python - 如何从单词文件的几行中拆分每个单词?(Python)
- scala - 执行方法,其中方法名称在列表中
- angular - 在 Anuglar 中的刷新调用后无法重试相同的请求
- php - 通过简码获取 Woocommerce 产品标签帖子计数
- reactjs - React - Firebase - 显示单个帖子
- python - 过滤熊猫python中的日期时间列
- php - 使用 PHP 和 MySQL 的 WHERE 子句的正确方法
- db2 - 如何获取 DB2 中非标识列的最后插入值
- html - 如何从 r 中的 data.frame 列创建 html 文本条目列表(没有循环)?