编码结果不正确
我尝试通过 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'