如何解决将PySerial Readline从字符串转换为二进制
|| 我正在从PIC微控制器发送字节字符串0x0F,0x07、0x55、0x55、0x55。 通过Python的串行端口,我正在PySerial中使用readlines()命令。我收到:[\'\\x0f\\x07UUU\']
这确实与我发送的字节串相对应,但是使用看起来像十六进制和ASCII字符的奇怪组合来格式化。什么是将其格式化回0x0F,0x07、0x55、0x55、0x55的好方法?
解决方法
在Python 2中,字节串(str)是8位字符的字符串,因此它将看起来像这样。使用\“ ord \”函数将每个字符转换为一个int:
>>> [ord(c) for c in \'\\x0f\\x07UUU\']
[15,7,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\']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。