Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中使用十六进制值的bytearray_Python_Arrays_Hex_Byte - Fatal编程技术网

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:so
x=io.BytesIO(字节([0x10,0x20,0x30])
,然后
x.read(1)
,等等。我一直在这样做-我做
b=x。读(1)
,然后做
print b
我得到空白。如何让它存储数值而不是ascii表示?