在 Python 3 中编码字符串,不使用 unicode \xc2 替换

encode string in Python 3 without unicode \xc2 subsitution

所以我正在编写一些代码来与一个硬件 vis pySerial 进行一些通信,我使用的是 python 2.7.7 并且一切正常,我切换到 python 3.4 因为我有问题安装 GUI "framework"。

所以我遇到的问题是我必须对发送到 COM 端口的字符串进行编码和解码,我不需要 Python 2.7.7

这是字符串,我知道十六进制值 81 不是 ascii,但我需要按照 python 2.7.7.

中发送的方式发送字符串
str = '\x1B\x81'

当我打印 str 我得到这个:

b'\x1b\xc2\x81'

我假设 \xc2 是我的 \x81 的一些特殊 unicode 字符,我知道 \x 是十六进制的转义字符,我不太确定 Python 2.7.7 是如何写的字符串到串口。

这行:

ser.write('\x1B\x81')

发送二进制文件到串口?有点像这样:

ser.write('0001 1011 1000 0001')

如果我发送这个:

ser.write('\x1B\x81')

硬件使用 Python 3,硬件只是挂起,什么也不做,但在 Python 2.7 中它可以工作。

Python 2.7 中的值 obj = '\x1B\x81' 将是 Python 3.

中的 obj = b'\x1B\x81'

Python 3 中的值 '\x1B\x81' 是文本,因此您不会向硬件发送二进制文件(这就是 Python 2 中所谓的 Unicode 字符串)。