我絕不是一個經驗豐富的Python程序員,這就是為什么我相信這個問題可能有一個明顯的答案,但我就是無法理解struct.pack和unpack。我有以下代碼:struct.pack("<"+"I"*elements, *self.buf[:elements]) 我想反轉它的打包,但是我不知道如何反轉,我知道“<”表示小端,“I”是無符號整數,僅此而已,我不知道如何使用 struct.unpack 反轉打包。
2 回答

桃花長相依
TA貢獻1860條經驗 獲得超8個贊
struct.pack獲取非字節值(例如整數、字符串等)并將它們轉換為bytes. 相反,struct.unpack將bytes它們轉換為“高階”等價物。
例如:
>>> from struct import pack, unpack
>>> packed = pack('hhl', 1, 2, 3)
>>> packed
b'\x00\x01\x00\x02\x00\x00\x00\x03'
>>> unpacked = unpack('hhl', packed)
>>> unpacked
(1, 2, 3)
因此,在您的實例中,您有小端無符號整數(elements其中很多)。您可以使用相同的結構字符串(部分'<' + 'I' * elements)解壓它們 - 例如struct.unpack('<' + 'I' * elements, value)。
示例來自: https: //docs.python.org/3/library/struct.html

www說
TA貢獻1775條經驗 獲得超8個贊
查看文檔: https: //docs.python.org/3/library/struct.html
obj = struct.pack("<"+"I"*elements, *self.buf[:elements]) struct.unpack("<"+"I"*elements, obj)
這對你有用嗎?
- 2 回答
- 0 關注
- 214 瀏覽
添加回答
舉報
0/150
提交
取消