在 Python 中从 ASCII 转换为十六进制
Convert from ASCII to Hex in Python
我正在尝试使用 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 位十六进制数字,所以没有简单的方法来逆转这个过程,因为你没有数字间距。
我正在尝试使用 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 位十六进制数字,所以没有简单的方法来逆转这个过程,因为你没有数字间距。