1
我想打包一個字節後跟一長。我的緩衝區只能包含9個元素。爲什麼我不能將它們打包到緩衝區中?python struct.pack()/ calcsize()
>>> from struct import *
>>> calcsize('qB')
9
>>> calcsize('Bq')
12
它返回的方式不同。爲什麼是這樣?
我使用Python 2.7.3的方式。
我想打包一個字節後跟一長。我的緩衝區只能包含9個元素。爲什麼我不能將它們打包到緩衝區中?python struct.pack()/ calcsize()
>>> from struct import *
>>> calcsize('qB')
9
>>> calcsize('Bq')
12
它返回的方式不同。爲什麼是這樣?
我使用Python 2.7.3的方式。
在第二個示例中,struct.calcsize
假定字節後有3個字節的填充,以便long long可以從4字節的邊界開始。
如果未指定填充,你會看到他們是等價的:
>>> calcsize ('Bq')
12
>>> calcsize('=Bq')
9
啊哈!謝謝你,看來你是對的。我沒有意識到Python默認情況下不能使用本地大小。 – Jon
'struct'使用原生大小,字節順序和對齊方式,除非您指定明確的字節順序,在這種情況下使用標準大小和不使用對齊方式。有關詳細信息,請參閱[文檔](http://docs.python.org/3.2/library/struct.html#byte-order-size-and-alignment)。 – chepner