编码结果不正确我试图通过 encode() 将字符串转换为十六进制格式的字节,但失败了。下面是我的代码,我预计 \xFF 会变成 \xFF ,但最终结果是 \xc3。我可以知道为什么吗?输入: x ="\x00\x00\xFF\x00\xFF\x00"输入: x.encode()输出: b'\x00\x00\xc3\xbf\x00\xc3\xbf\x00'
2 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
string.encode() 的默认编码是 UTF-8。UTF-8 使用数字十进制代码 0-127 作为其数值的字符进行编码。它将大于 127 的值编码为两个或更多字节,具体取决于被编码的字符。
0 的 UTF-8 编码是 0。'\xFF'(255) 的 UTF-8 编码是 '\xc3\xbf'。
因此,如果您将该输入中的 6 个字节中的每一个都替换为 UTF-8 编码,您将获得输出。
三国纷争
TA贡献1804条经验 获得超7个赞
如果你想要等效的字节对象,而不是编码的字符串,你可以这样得到:
>>> x ="\x00\x00\xFF\x00\xFF\x00"
>>> bytes(x, 'latin-1')
b'\x00\x00\xff\x00\xff\x00'
添加回答
举报
0/150
提交
取消