[英]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
表示為字符串。 當為人眼表示字符串時,將根據當前編碼( ASCII
, utf-8
等)顯示字符。 在當前編碼中,值為0x23
的字符是哈希符號( #
)。 僅對於沒有字符表示( 0x00
等)的字節,顯示十六進制表示(例如\\x00
)。
所以你看到的是絕對正確的,因為你問(可能不知道)你的字節數組的字符串表示。
如果要查看每個字節的十六進制值,請使用data1.hex()
。 這將為每個字節創建一個十六進制表示,並連接所有這些。 結果將是僅包含十六進制數字( 0-9
和af
)的字符串。 這僅適用於打印,在大多數情況下,它對進一步處理無用。
在Python3中,請考慮使用bytes([0x00, 0x01, ...])
0x00,0x01, bytes([0x00, 0x01, ...])
。 這將生成一個bytes
對象,該對象更加本地語言(例如,許多函數,如write()
, send()
等將接受它作為輸入)。 它還具有如上所述的hex()
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.