1

PIC マイクロコントローラからバイト文字列 0x0F、0x07、0x55、0x55、0x55 を送信しています。

Python のシリアル ポート経由で、PySerial で readlines() コマンドを使用しています。私は受け取ります:

['\x0f\x07UUU']

これは確かに私が送信したバイト文字列に対応していますが、16 進数と ASCII 文字の奇妙な組み合わせのように見えるものを使用してフォーマットされています。これを 0x0F, 0x07, 0x55, 0x55, 0x55 にフォーマットする良い方法は何でしょうか?

4

3 に答える 3

2

Python 2では、バイト文字列(str)は8ビット文字の文字列であるため、次のようになります。「ord」関数を使用して、各文字をintに変換します。

>>> [ord(c) for c in '\x0f\x07UUU']
[15, 7, 85, 85, 85]
于 2011-05-27T23:59:47.417 に答える
1

チェックアウトbinascii.hexlify。説明によると:

バイナリデータの16進表現を返します。データのすべてのバイトは、対応する2桁の16進表現に変換されます。したがって、結果の文字列はデータの長さの2倍の長さになります。

例:

>>> import binascii
>>> binascii.hexlify('\x0f\x07UUU')
'0f07555555'
于 2011-05-27T23:59:54.223 に答える
0

16 進数に戻る場合:

>>> data = binascii.hexlify('\x0f\x07UUU')
>>> ['0x' + data[i:i+2] for i in range(0, len(data), 2)]
['0x0f', '0x07', '0x55', '0x55', '0x55']
于 2013-03-25T10:42:16.043 に答える