簡體   English   中英

ByteArray顯示不是十六進制數字Python

[英]ByteArray show not hexadecimal digits Python

我正在處理從Python中的UDP數據包中提取的字節數組。

它的數據如下所示:

data = [0x00,0x01,0x23,0x84,0xa6]

當我使用bytearray(data)並打印其內容時,提示會顯示一個非十六進制數字,如x01#或其他數據內容, #數字替換為\\n數字。 我真的不知道為什么會這樣。

完整的代碼示例

data = [0x00,0x01,0x23,0x84,0xa6]

data1 = bytearray(data)

print(data)
print(data1)

印刷品顯示

[0, 1, 35, 132, 166]
bytearray(b'\x00\x01#\x84\xa6')

使用bytes(data)問題是一樣的。

您的bytearray表示為字符串。 當為人眼表示字符串時,將根據當前編碼( ASCIIutf-8等)顯示字符。 在當前編碼中,值為0x23的字符是哈希符號( # )。 僅對於沒有字符表示( 0x00等)的字節,顯示十六進制表示(例如\\x00 )。

所以你看到的是絕對正確的,因為你問(可能不知道)你的字節數組的字符串表示。

如果要查看每個字節的十六進制值,請使用data1.hex() 這將為每個字節創建一個十六進制表示,並連接所有這些。 結果將是僅包含十六進制數字( 0-9af )的字符串。 這僅適用於打印,在大多數情況下,它對進一步處理無用。

在Python3中,請考慮使用bytes([0x00, 0x01, ...]) 0x00,0x01, bytes([0x00, 0x01, ...]) 這將生成一個bytes對象,該對象更加本地語言(例如,許多函數,如write()send()等將接受它作為輸入)。 它還具有如上所述的hex()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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