我无法找出为什么这不起作用。我想使用struct modul读取一个整数(双字)和4个四字。这代表4 + 4 * 8 = 36个字节,但是python给了我这个:
>>> import struct
>>> struct.calcsize("I4Q")
40
有谁知道为什么?非常感谢...
答案 0 :(得分:1)
根据the documentation: Byte Order, Size, and Alignment:
默认情况下,C类型以机器的本机格式表示 字节顺序,如果需要,通过跳过填充字节正确对齐 (根据C编译器使用的规则)。
>>> struct.calcsize("I4Q")
40
>>> struct.calcsize("@I4Q")
40
如果您指定>
,=
,<
,!
,则不使用原生对齐:
>>> struct.calcsize(">I4Q")
36
>>> struct.calcsize("=I4Q")
36
>>> struct.calcsize("<I4Q")
36
>>> struct.calcsize("!I4Q")
36