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

14 python string hex

我在想binascii是我正在寻找的模块,但我似乎无法得到我正在寻找的确切结果.

这就是我想要做的.我想转换:

>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> print len(s)
40
Run Code Online (Sandbox Code Playgroud)

>>> 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
Run Code Online (Sandbox Code Playgroud)

任何Pythonist都知道这样做很酷(或者,坦率地说,功能性)吗?

Sve*_*ach 21

所有版本的Python中,您都可以使用该函数 binascii.a2b_hex()(也称为binascii.unhexlify()):

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

Python 3.x中,您可以使用bytes.fromhex(s).

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

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

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

  • 现在您可以执行byte.fromhex('356a192b7913b04c54574d18c28d46e6395428ab')` (2认同)