[英]Converting PySerial Readline From String to Binary
我正在從 PIC 微控制器發送字節串 0x0F、0x07、0x55、0x55、0x55。
通過帶有 Python 的串行端口,我在 PySerial 中使用 readlines() 命令。 我收到:
['\x0f\x07UUU']
這確實與我發送的字節串相對應,但它是使用十六進制和 ASCII 字符的奇怪組合進行格式化的。 將其格式化回 0x0F、0x07、0x55、0x55、0x55 的好方法是什么?
在 Python 2 中,字節串 (str) 是一個 8 位字符的字符串,所以它看起來像這樣。 使用 "ord" function 將每個字符轉換為 int:
>>> [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']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.