为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

函数式编程 2021-12-21 16:14:33
编码结果不正确我试图通过 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 编码,您将获得输出。


查看完整回答
反对 回复 2021-12-21
?
三国纷争

TA贡献1804条经验 获得超7个赞

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


>>> x ="\x00\x00\xFF\x00\xFF\x00"

>>> bytes(x, 'latin-1')

b'\x00\x00\xff\x00\xff\x00'


查看完整回答
反对 回复 2021-12-21
  • 2 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信