猿问

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

编码结果不正确

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

我可以知道为什么吗?

输入: x ="\x00\x00\xFF\x00\xFF\x00"

输入: x.encode()

输出: b'\x00\x00\xc3\xbf\x00\xc3\xbf\x00'


函数式编程
浏览 139回答 2
2回答

一只名叫tom的猫

string.encode() 的默认编码是 UTF-8。UTF-8 使用数字十进制代码 0-127 作为其数值的字符进行编码。它将大于 127 的值编码为两个或更多字节,具体取决于被编码的字符。0 的 UTF-8 编码是 0。'\xFF'(255) 的 UTF-8 编码是 '\xc3\xbf'。因此,如果您将该输入中的 6 个字节中的每一个都替换为 UTF-8 编码,您将获得输出。

三国纷争

如果你想要等效的字节对象,而不是编码的字符串,你可以这样得到:>>> x ="\x00\x00\xFF\x00\xFF\x00">>> bytes(x, 'latin-1')b'\x00\x00\xff\x00\xff\x00'
随时随地看视频慕课网APP

相关分类

Python
我要回答