Python结构格式字符大小,为什么它应该比它应该大?

时间:2016-11-23 12:01:42

标签: python python-3.x struct binary

如果执行以下操作,可以使用简单的问题:

import struct
struct.calcsize("6cHcBHIIQ")
当我认为它应该是28时,

返回32.

通过执行以下操作(缺少Q):

import struct
struct.calcsize("6cHcBHII")

它返回20,这是我所期望的。

并且正在做:

import struct
struct.calcsize("Q")

返回8,这是正确的。

为什么将Q添加到顶部,导致预期12个额外字节而不是8?

Python 3,windows机器。

感谢。

2 个答案:

答案 0 :(得分:4)

对齐。有关详细信息,请参阅https://docs.python.org/3/library/struct.html#struct-alignment

尝试struct.calcsize("=6cHcBHIIQ")

答案 1 :(得分:1)

您还可以通过更好地重新调整这些尺寸来最小化尺寸:

'IN'

产生struct.calcsize("QIIHHB6cc") ,您通常应该期望填充是任何结构大小问题的罪魁祸首。请参阅Why isn't sizeof for a struct equal to the sum of sizeof of each member?以获得关于为什么结构尺寸有时可能比它们看起来更大的答案的好答案。