[英]Pack and Unpack Bits and Bytes in Python
我是Python(我正在使用Python3)和編程的新手。 您能否詳細說明如何打包和解包在python中產生答案; 我知道使用這兩種功能的語法,但是我不明白答案的計算方式。 例如,我不明白為什么下面的代碼:
L = struct.pack('f', 255) print([ii for ii in L])
會產生以下輸出(尤其是為什么有127和67):
[0, 0, 127, 67]
另外,為什么下面的代碼:
LL = struct.unpack('i', b'0000') print(LL)
將產生以下數字:
(808464432,)
謝謝您的幫助。
在第一種情況下,您將看到組成一個32位浮點數的4個字節的十進制值。
在您的特定示例中,浮點數255.0在內存中表示為4個字節,十六進制值為43 7f 00 00
。 由於您使用的是低端字節序平台,因此首先會看到最低有效字節。 因此,將其轉換為字節列表
[ 0x00, 0x00, 0x7f, 0x43 ]
轉換為您獲得的十進制值
[0, 0, 127, 67]
在第二種情況下,您嘗試解釋b'0000'
的結果。
>>> type(b'0000')
<class 'bytes'>
>>> len(b'0000')
4
如您所見,該表達式返回4個字節的序列,因此在這種情況下它將是字符0
的4個實例的序列。
>>> '%x' % ord('0')
'30'
字符0
的值是十六進制的0x30
。 解釋為32位整數的4個字節等效於十六進制值0x30303030
。
>>> 0x30303030
808464432
當我們用十進制寫這個值時,我們得到808464432
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.