對不起,愚蠢的問題,但是,Python的struct.pack究竟做了什麼?
我閱讀文檔,而且還可以瞭解什麼是這個功能做:
struct.pack('<L',0x01D1F23A)
有人能解釋十分幼稚和詳細的方式是什麼這一功能將爲做給定輸入和其他輸入。
當我打印輸出我得到「:≥╤☺」,十六進制值的ASCII表示,struct.pack的所以基本上如何懸掛,它則轉爲小端旁邊的十六進制值。 它如何存儲在內存中? 我不明白它是什麼「包裝」。
謝謝。
對不起,愚蠢的問題,但是,Python的struct.pack究竟做了什麼?
我閱讀文檔,而且還可以瞭解什麼是這個功能做:
struct.pack('<L',0x01D1F23A)
有人能解釋十分幼稚和詳細的方式是什麼這一功能將爲做給定輸入和其他輸入。
當我打印輸出我得到「:≥╤☺」,十六進制值的ASCII表示,struct.pack的所以基本上如何懸掛,它則轉爲小端旁邊的十六進制值。 它如何存儲在內存中? 我不明白它是什麼「包裝」。
謝謝。
返回值是Python 2中的一個字節串(在Python 3中),或者是Python 2中的標準(非Unicode)字符串,顯示0x01D1F23A以little-endian字節順序表示爲unsigned long。
它的「包裝」因爲它存儲爲原始的二進制內容 - 你必須與本地存儲在內存上的小端平臺上的固有無符號長型完全相同的內容。
The byte order is specified by the <
和the unsigned-long type is specified by the L
。
,如果你試圖寫一個文件,網絡數據包,或在本地二進制格式等內容,這非常有用。
這需要數據的幾件(在你的情況下,連成一片,L - 4字節整數),並將它們放入一個字節串
>>> struct.pack('<L', 0x01D1F23A) == b'\x3A\xF2\xD1\x01'
True
你的困惑可能來自多個來源
嗯?它只是「十六進制」,而它是配置文件中的文本;一旦它被解析,它就是一個傳遞給'pack()'調用的本地二進制數。 –
這不是ASCII;我不確定什麼編碼會映射,例如,「F2」爲≥。 – chepner