我从PIC单片机发送字节串0x0F,0x07,0x55,0x55,0x55。
在Python的串口上,我在PySerial中使用了readlines()命令。我收到了:
['\x0f\x07UUU']
这确实对应于我发送的字节串,但它使用看起来像十六进制和ASCII字符的奇怪组合的格式进行格式化。什么是将其格式化为0x0F,0x07,0x55,0x55,0x55的好方法?
答案 0 :(得分:2)
在Python 2中,bytestring(str)是一个8位字符的字符串,所以它看起来就像那样。使用“ord”函数将每个字符转换为int:
>>> [ord(c) for c in '\x0f\x07UUU']
[15, 7, 85, 85, 85]
答案 1 :(得分:1)
结帐binascii.hexlify
。根据descritption:
返回二进制数据的十六进制表示。数据的每个字节都转换为相应的2位十六进制表示。因此,结果字符串的长度是数据长度的两倍。
一个例子:
>>> import binascii
>>> binascii.hexlify('\x0f\x07UUU')
'0f07555555'
答案 2 :(得分:0)
回到十六进制:
>>> data = binascii.hexlify('\x0f\x07UUU')
>>> ['0x' + data[i:i+2] for i in range(0, len(data), 2)]
['0x0f', '0x07', '0x55', '0x55', '0x55']