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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:如何将包含十六进制字节的字符串转换为十六进制字符串相关的知识,希望对你有一定的参考价值。

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

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

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

>>> hs = 'x35x6ax19x2bx79x13xb0x4cx54x57x4dx18xc2x8dx46xe6x39x54x28xab'
>>> print len(hs)
20

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

答案

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

>>> import binascii
>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> binascii.a2b_hex(s)
'5jx19+yx13xb0LTWMx18xc2x8dFxe69T(xab'

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

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

>>> s.decode("hex")
'5jx19+yx13xb0LTWMx18xc2x8dFxe69T(xab'

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

另一答案

使用binascii模块:

>>> from binascii import unhexlify
>>> s = '356a192b7913b04c54574d18c28d46e6395428ab'
>>> unhexlify(s)
'5jx19+yx13xb0LTWMx18xc2x8dFxe69T(xab'

以上是关于Python:如何将包含十六进制字节的字符串转换为十六进制字符串的主要内容,如果未能解决你的问题,请参考以下文章

在python中将字节转换为位

PHP如何将从二进制文件中读取的字节转换为数字

使用 C#,将包含二进制数据的字符串转换为字节数组的最有效方法是啥

python 数值转BCD,如何拼接二进制字符串

在 Python 中将整数转换为 2 字节的十六进制值

如何在 Python 中将字符串转换为字节数组