gpt4 book ai didi

python - ByteArray 显示的不是十六进制数字 Python

转载 作者:行者123 更新时间:2023-11-30 22:11:16 24 4
gpt4 key购买 nike

我正在使用 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-9a-f)的字符串。这仅对打印有用,在大多数情况下对进一步处理没有用处。

在 Python3 中,请考虑使用 bytes([0x00, 0x01, ...]) 代替。这将生成一个对语言来说更原生的 bytes 对象(例如,write()send() 等许多函数将接受它作为输入)。它还有一个 hex() 方法,如上所述。

关于python - ByteArray 显示的不是十六进制数字 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51481373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com