如何解决在 Python 中从 ASCII 转换为十六进制
我正在尝试使用 python 将带有特殊字符的字符串从 ASCII 转换为十六进制,但似乎我没有得到正确的值,请注意每当我尝试转换一个字符串时它都可以正常工作没有特殊字符。所以基本上这就是我正在做的:
import binascii
s = "D`Cزف³›"
s_bytes = str.encode(s)
hex_value = str(binascii.hexlify(s_bytes),'ascii')
print (hex_value)
输出
446043d8b2d981c2b316e280ba
输出应该在哪里(使用在线转换器 https://www.rapidtables.com/convert/number/ascii-to-hex.html):
446043632641b3203a
解决方法
str.encode(s)
默认为 utf8
编码,它不会为您提供获得所需输出所需的字节值。您想要的值只是作为十六进制值的 Unicode 序数,因此获取序数,转换为十六进制并将它们连接在一起:
s = 'D`Cزف³›'
h = ''.join([f'{ord(c):x}' for c in s])
print(h)
446043632641b3203a
只需意识到 Unicode 序数可以是 1-6 个十六进制数字,因此没有简单的方法可以逆转该过程,因为您没有数字间距。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。