在 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 字符串)。
所以我正在编写一些代码来与一个硬件 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 字符串)。