我有一个长度为 41 的字节对象。我尝试用以下方法解压它:
struct.unpack('2B2B32sBi',data)
但我收到一个错误:
struct.error:解包需要长度为 44 的字节对象
我认为长度2B2B32sBi
应该2*1+2*1+32*1+1+4=41
检查python文档后。为什么我错了?
你刚刚遇到padding因为您首先获得字节数据,然后获得整数(具有更强的对齐约束)
来自文档 https://docs.python.org/3/library/struct.html:
仅在连续的结构成员之间自动添加填充。在编码结构的开头或结尾处不添加填充。
So you have指定字节顺序以禁用填充:
struct.unpack('<2B2B32sBi',data)
为完整性而编辑,在阅读盖伦的出色回答后:只需指定=
如果你不想强制字节序,那就更好了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)