簡體   English   中英

將 PySerial Readline 從字符串轉換為二進制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM