簡體   English   中英

Python 字節數組打印

[英]Python Bytearray Printing

我在 Python 中有一個 integer 列表,它應該對應於以下 int 值(可以更改為十六進制字節值):

[10, 145, 140, 188, 212, 198, 210, 25, 152, 20, 120, 15, 49, 113, 33, 220, 124, 67, 174, 224, 220, 241, 241]

但是,當我將該列表轉換為 bytearray(使用 bytearray(nameOfList))時,我得到以下打印輸出。

bytearray(b'\n\x91\x8c\xbc\xd4\xc6\xd2\x19\x98\x14x\x0f1q!\xdc|C\xae\xe0\xdc\xf1\xf1')

我可以從這個字節數組中提取正確的值,不管它如何打印,但是 bytearray 打印輸出不應該對應於字節數組的十六進制值嗎? (我的意思是,它似乎主要遵循十六進制值,直到 \x0f 之后,它開始發出亂碼......)

>>> x = bytearray(b'\n\x91\x8c\xbc\xd4\xc6\xd2\x19\x98\x14x\x0f1q!\xdc|C\xae\xe0
\xdc\xf1\xf1')
>>> import binascii
>>> print binascii.hexlify(x)
0a918cbcd4c6d2199814780f317121dc7c43aee0dcf1f1

如果您希望將所有內容都打印為十六進制字符串,請使用 binascii

對我來說看起來不錯。 它只是盡可能將字節呈現為 ASCII 字符。 在 15= \\x0f你有 49='1' 和 113='q' 等。

http://asciitable.com

使用 bytes.hex()

>>> x = bytearray([0x01,0x02,0xff])
>>> print(x.hex())
0102ff

這在大尺寸下可能不是很好,但我發現這使它更容易閱讀:

buff = bytearray(list(range(10)))
print(buff)
print(", ".join(hex(b) for b in buff))

印刷

bytearray(b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t')
0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9

暫無
暫無

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

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