2016-11-30 56 views
1

我有以下奇怪的問題,而試圖讀取和蟒蛇解開INT32 +的Int64 2.7.9拆包INT +長長的蟒蛇

file = open('my_file.bin','rb') 
s = file.read(4 + 8) 
struct.unpack('IQ',s) 

我得到以下錯誤: 解壓需要的字符串參數長度16

這是爲什麼? I = 4 Q = 8 IQ = 12

順便說一句以下工作:

s = file.read(4) 
struct.unpack('I',s) 
s = file.read(8) 
struct.unpack('Q',s) 
+0

我想這兩個解壓然後完成8 * 8 = int64,可以嗎? –

回答

2

沒有用它自己,但根據文檔,解包()使用結構的原生填料,如將一個C編譯器:顯然,你正在64位機器上運行。如果您知道要打包的結構並按照本機字節排序,請使用等號IQ前綴格式字符串=IQ

背景:CPU的可以獲取比打包數據更有效地在字邊界上對齊的數據,這需要兩個讀取週期(並且與CPU的速度DRAM存取速度慢)。現在,64位是常見(8分字節的話),這有助於解釋爲什麼我們需要更多的內存,這些天...

+0

確實='智商'的作品。謝謝 – Barak

0

它對準相關的問題。您可以檢查docs