python中使用十六进制值的bytearray
我想在处理字节时使用十六进制值。然而,我不太清楚这是如何做到的。例如:python中使用十六进制值的bytearray,python,arrays,hex,byte,Python,Arrays,Hex,Byte,我想在处理字节时使用十六进制值。然而,我不太清楚这是如何做到的。例如: >>> bytearray([0x10,0x20,0x30]) bytearray(b'\x10 0') 为什么忽略了0x20和0x30 0x20和0x30不会被忽略:字节数组的bytearray格式类似于ASCII字符,0x20恰好是一个空格()的ASCII码,映射到零(0)的0x30也是如此 这只是表示二进制数组的一种简洁方法。您可以在此对话框中读取所有值及其对应的字符 如果字符不可打印,则将其格式化
>>> bytearray([0x10,0x20,0x30])
bytearray(b'\x10 0')
为什么忽略了
0x20
和0x30
0x20
和0x30
不会被忽略:字节数组的bytearray
格式类似于ASCII字符,0x20
恰好是一个空格(
)的ASCII码,映射到零(0
)的0x30
也是如此
这只是表示二进制数组的一种简洁方法。您可以在此对话框中读取所有值及其对应的字符
如果字符不可打印,则将其格式化为
\x???
,并使用??
十六进制代码。它们不会被忽略0x20
是空格的ASCII码点,0x30
是数字0
。两者都在输出中,位于\x10
字节之后
您看到的是字节值的表示,它试图尽可能可读。它通过将可打印ASCII范围内的任何字节显示为该ASCII字符来实现。任何不那么具有代表性的内容都会显示为转义序列或较短的两字符转义(例如换行符为\n
,制表符为\t
)
请注意,Python为每个0xhh
hex符号生成一个整数值;生成相同的整数值只不过是另一种语法。你也可以用十进制或八进制,结果是一样的;将整数值放入列表
对象中,然后从中创建bytearray
对象。在此过程中不保留原始十六进制符号:
>>> [0x10, 0x20, 0x30]
[16, 32, 48]
>>> bytearray([16, 32, 48])
bytearray(b'\x10 0')
>>> [0o20, 0o40, 0o60]
[16, 32, 48]
>>> bytearray([0o20, 0o40, 0o60])
bytearray(b'\x10 0')
bytearray
中的实际值仍然是整数;如果索引到对象中,则会得到单个字节值:
>>> ba = bytearray([0x10, 0x20, 0x30])
>>> ba
bytearray(b'\x10 0')
>>> ba[1] # 0x20, the space
32
>>> ba[2] # 0x30, the 0 digit
48
您还可以告诉我如何将bytearray视为流,例如x=bytearray([0x10,0x20,0x30])和x.read(1)=16,x.read(1)=32@ritch:如果需要字节流,请使用
io.BytesIO()
。@ritch:sox=io.BytesIO(字节([0x10,0x20,0x30])
,然后x.read(1)
,等等。我一直在这样做-我做b=x。读(1)
,然后做print b
我得到空白。如何让它存储数值而不是ascii表示?