2012-12-19 23 views
0
>>> import binascii, struct 
>>> foo_hex = 'b1e92555' 
>>> foo_bin = binascii.unhexlify(foo_hex) 
>>> int(foo_hex, 16) 
2984846677 
>>> struct.unpack('i', foo_bin)[0] 
1428548017 

爲什麼這些整數不同?哪種方法是正確的,如何將另一種方法更改爲正確的?從相同的Python字節字符串派生的不同整數

回答

4

struct正在使用小端符號解釋該值,而使用unhexlifyint(.., 16)將其解釋爲大端無符號整數。

使用<>指定您輸入的存儲方式,並使用I把它解釋爲一個有符號整數:

>>> struct.unpack('>I', foo_bin)[0] 
2984846677 
>>> struct.unpack('<I', foo_bin)[0] 
1428548017 

struct文檔頁面的Byte Order, Size and Alignment section

相關問題