将PySerial Readline从String转换为Binary

时间:2011-05-27 23:45:11

标签: python pyserial

我从PIC单片机发送字节串0x0F,0x07,0x55,0x55,0x55。

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

['\x0f\x07UUU']

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

3 个答案:

答案 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']