在python中,我有一个十六进制值'e65814e4382759f85550029e723dc7e7'的字符串,我想将其编码为字节,问题是如果我使用

b'string'


要么

bytes(string, 'ascii')


它会将值编码为一个字符串转换为字节,但是不是,它已经是一组16个十六进制对。

因此,我该如何让python识别我已经写成数据的东西,或者强制绕过一个句子来按原样编码和转换对象。

最佳答案

您要使用binascii模块:

>>> import binascii
>>> hexstr = 'e65814e4382759f85550029e723dc7e7'
>>> binascii.unhexlify(hexstr)
b"\xe6X\x14\xe48'Y\xf8UP\x02\x9er=\xc7\xe7"


并向自己证明...

>>> [f"{b:x}" for b in  binascii.unhexlify(hexstr)]
['e6', '58', '14', 'e4', '38', '27', '59', 'f8', '55', '50', '2', '9e', '72', '3d', 'c7', 'e7']

08-25 22:35