将 python2 字节/字符串编码转换为 python3

Posted

技术标签:

【中文标题】将 python2 字节/字符串编码转换为 python3【英文标题】:Converting python2 byte/string encoding to python3 【发布时间】:2017-10-14 09:04:49 【问题描述】:

我正在通过串行端口进行通信,并且当前使用我想转换为 python3 的 python2 代码。我想确保我通过网络发送的字节是相同的,但我无法验证是否是这种情况。

在原始代码中,命令是这样发送的:

serial.Serial().write("\xaa\xb4" + chr(2))

如果我在 python2 中 print "\xaa\xb4" 我得到这个:��. 如果我在 python3 中print("\xaa\xb4") 我得到这个:ª´

编码和解码似乎也相反:

Python2:print "\xaa".decode('latin-1') -> ª Python3:print("\xaa".encode('latin-1')) -> b'\xaa'

粗略地说,我需要在 python3 中发送什么serial.write() 以确保发送完全相同的1s 和0s 序列?

【问题讨论】:

【参考方案1】:

使用bytes 序列。

ser.write(b'\xaa\xb4')

【讨论】:

但是如果我构造这样的命令:a = '\xaa',我将如何将它传递给write()print(bytes(a, 'utf8')) -> b'\xc2\xaa' 通常你不会;你首先会使用bytes。如果由于某种原因您有文本并且需要将前 256 个字符转换为字节,那么您可以使用 latin-1 编解码器。 是的,谢谢。使用b'\xaa' 等进行构建使一切变得更容易。我意识到我的问题在于chr()ord()

以上是关于将 python2 字节/字符串编码转换为 python3的主要内容,如果未能解决你的问题,请参考以下文章

4.python2与python3编码区别,以及字符串与字节的相互转换及其socket编程应用场景

Python数字字符串

如何在 JavaScript 中使用字节数组将字符串转换为 base64 编码?

如何将图像的字节数组转换为表示 jpg 的 base64 编码字符串

Unicode是啥???

在 C# 中有效地将字符串转换为字节数组(不使用编码)[重复]