簡體   English   中英

用Python打包位和字節

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM