Python 将PySerial Readline从字符串转换为二进制

Python 将PySerial Readline从字符串转换为二进制,python,pyserial,Python,Pyserial,我正在从PIC微控制器发送bytestring 0x0F,0x07,0x55,0x55 在Python的串口上,我使用PySerial中的readlines()命令。我收到: ['\x0f\x07UUU'] 这确实对应于我发送的bytestring,但是它的格式使用了看起来像是十六进制和ASCII字符的奇怪组合。将其格式化为0x0F、0x07、0x55、0x55、0x55的好方法是什么?在Python 2中,bytestring(str)是一个由8位字符组成的字符串,因此它看起来是这样的。使用

我正在从PIC微控制器发送bytestring 0x0F,0x07,0x55,0x55

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

['\x0f\x07UUU']
这确实对应于我发送的bytestring,但是它的格式使用了看起来像是十六进制和ASCII字符的奇怪组合。将其格式化为0x0F、0x07、0x55、0x55、0x55的好方法是什么?

在Python 2中,bytestring(str)是一个由8位字符组成的字符串,因此它看起来是这样的。使用“ord”函数将每个字符转换为整数:

>>> [ord(c) for c in '\x0f\x07UUU']
[15, 7, 85, 85, 85]

查看
binascii.hexlify
。根据描述:

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

例如:

>>> import binascii
>>> binascii.hexlify('\x0f\x07UUU')
'0f07555555'
对于返回到十六进制:

>>> data = binascii.hexlify('\x0f\x07UUU')
>>> ['0x' + data[i:i+2] for i in range(0, len(data), 2)]
['0x0f', '0x07', '0x55', '0x55', '0x55']
映射(ord,'\x0f\x07UUU')#替代方法