2016-11-23 51 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

相關問題