1

我正在从 PIC 微控制器发送字节串 0x0F、0x07、0x55、0x55、0x55。

通过 Python 的串行端口,我在 PySerial 中使用 readlines() 命令。我收到:

['\x0f\x07UUU']

这确实与我发送的字节串相对应,但它是使用十六进制和 ASCII 字符的奇怪组合进行格式化的。将其格式化回 0x0F, 0x07, 0x55, 0x55, 0x55 的好方法是什么?

4

3 回答 3

2

在 Python 2 中,字节串 (str) 是一个 8 位字符的字符串,所以它看起来像这样。使用“ord”函数将每个字符转换为一个 int:

>>> [ord(c) for c in '\x0f\x07UUU']
[15, 7, 85, 85, 85]
于 2011-05-27T23:59:47.417 回答
1

退房binascii.hexlify。根据描述:

返回二进制数据的十六进制表示。每个数据字节都转换为相应的 2 位十六进制表示。因此,生成的字符串是数据长度的两倍。

一个例子:

>>> import binascii
>>> binascii.hexlify('\x0f\x07UUU')
'0f07555555'
于 2011-05-27T23:59:54.223 回答
0

回到十六进制:

>>> data = binascii.hexlify('\x0f\x07UUU')
>>> ['0x' + data[i:i+2] for i in range(0, len(data), 2)]
['0x0f', '0x07', '0x55', '0x55', '0x55']
于 2013-03-25T10:42:16.043 回答