2016-11-23 56 views
1

简单的问题,如果做到以下几点:Python结构格式字符大小,它为什么比它应该大?

import struct 
struct.calcsize("6cHcBHIIQ") 

收益32时,我认为它应该是28

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

import struct 
struct.calcsize("6cHcBHII") 

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

,做:

import struct 
struct.calcsize("Q") 

返回8,这是正确的。

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

Python 3,windows机器。

谢谢。

+0

只是对此问题的更新:相同的行为可以在Ubuntu 14.04上重现。 – Fejs

回答

1

您还可以通过更好的方式重新调整这些最小尺寸:

struct.calcsize("QIIHHB6cc") 

产生28,你通常应该会填充以任何结构尺寸问题的罪魁祸首。请参阅Why isn't sizeof for a struct equal to the sum of sizeof of each member?,以获取有关为什么结构大小有时可能会比看起来大的很好的答案。

+0

谢谢你。我是从文件解压字节,然后格式字符串将需要在正确的顺序,但它不会? – BloodSexMagik

相关问题