Python:如何将包含十六进制字节的字符串转换为十六进制字符串

2024-06-16 09:07:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我认为binasci是我正在寻找的模块,但我似乎无法得到我正在寻找的确切结果。

这是我想做的。我要转换:

>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> print len(s)
40

>>> hs = '\x35\x6a\x19\x2b\x79\x13\xb0\x4c\x54\x57\x4d\x18\xc2\x8d\x46\xe6\x39\x54\x28\xab'
>>> print len(hs)
20

有没有Python知道一种很酷(或者说,很实用)的方法来做这个?


Tags: 模块lenhsprintx13xb0x4cx19
2条回答

使用binascii模块:

>>> from binascii import unhexlify
>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> unhexlify(s)
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'

在所有版本的Python中,可以使用函数 ^{}(也称为^{}):

>>> import binascii
>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> binascii.a2b_hex(s)
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'

在Python 3.x中,您可以使用^{}

在Python 2.x中,可以使用hexstr to str编解码器:

>>> s.decode("hex")
'5j\x19+y\x13\xb0LTWM\x18\xc2\x8dF\xe69T(\xab'

编解码器内部调用binascii.a2b_hex()

相关问题 更多 >