编码结果不正确
我试图通过encode()将字符串转换为十六进制格式的字节,但是失败了。 下面是我的代码,我希望\ xFF会变成\ xFF,但最终结果是\ xc3。
我可以知道为什么吗?
输入:x ="\x00\x00\xFF\x00\xFF\x00"
输入:x.encode()
输出:b'\x00\x00\xc3\xbf\x00\xc3\xbf\x00'
答案 0 :(得分:2)
string.encode()的默认编码为UTF-8。 UTF-8使用数字十进制代码0-127作为其数值来编码字符。根据要编码的字符,它将大于127的值编码为两个或更多字节。
0的UTF-8编码为0。'\ xFF'(255)的UTF-8编码为'\ xc3 \ xbf'。
因此,如果用输入的6个字节中的每个字节的UTF-8编码替换输入,则会得到输出。
答案 1 :(得分:0)
如果您使用等效字节对象(而不是编码字符串),则可以这样获得它:
>>> x ="\x00\x00\xFF\x00\xFF\x00"
>>> ba = bytearray(ord(b) for b in x)
>>> bytes(ba)
b'\x00\x00\xff\x00\xff\x00'