字符串到十六进制编码问题 .by encode() 模块,但失败



编码结果不正确

我尝试通过 encode(( 将字符串转换为十六进制格式的字节,但失败了。下面是我的代码,我预计 \xFF 会变成 \xFF ,但最终结果是 \xc3。

我可以知道为什么吗?

输入:x ="x00x00xFFx00xFFx00"

输入:x.encode()

输出:b'x00x00xc3xbfx00xc3xbfx00'

string.encode(( 的默认编码是 UTF-8。 UTF-8 使用数字十进制代码 0-127 作为其数值对字符进行编码。 它将大于 127 的值编码为两个或多个字节,具体取决于要编码的字符。

0 的 UTF-8 编码为 0。 "\xFF"(255( 的 UTF-8 编码是"\xc3\xbf"。

因此,如果将该输入中的 6 个字节中的每一个替换为 UTF-8 编码,则会获得输出。

如果你想要等效的字节对象,而不是编码的字符串,你可以像这样得到它:

>>> x ="x00x00xFFx00xFFx00"
>>> bytes(x, 'latin-1')
b'x00x00xffx00xffx00'

最新更新