Python,十六进制值转换为字符串/整数

6
我想知道如何将十六进制值转换为字符串或整数。 示例:
>>> a = b'\x91\x44\x77\x65\x92'
>>> b = b'\x44\x45\x41\x44\x42\x45\x45\x46'
>>> a
>>> �Dwe�
>>> b
>>> 'DEADBEEF'

ab的期望结果:

>>> 9144776592
>>> '4445414442454546'

感谢您。

3个回答

8
>>> a = b'\x91\x44\x77\x65\x92'
>>> a.encode("hex")
'9144776592'
>>> b.encode('hex')
'4445414442454546'

请注意,使用encode('hex')不好-这里有一个解释

在Python 2中,您可以在8位字符串上调用encode(),即您可以对已经编码的内容进行编码。这是没有意义的。encode()用于将Unicode字符串编码为8位字符串,而不是将8位字符串作为8位字符串进行编码。

在Python 3中,您不能再在8位字符串上调用encode(),因此十六进制编解码变得无意义并被删除。

使用binascii更容易和更好,它专门用于二进制和ASCII之间的转换,在Python 2和3中都可以使用:
>>> import binascii
>>> binascii.hexlify(b'\x91\x44\x77\x65\x92')
b'9144776592'

3
使用 binascii.hexlify 函数:
In [1]: from binascii import hexlify

In [2]: a = b'\x91\x44\x77\x65\x92'

In [3]: hexlify(a)
Out[3]: b'9144776592'

In [4]: b = b'\x44\x45\x41\x44\x42\x45\x45\x46'

In [5]: hexlify(b)
Out[5]: b'4445414442454546'

如果你想要字符串str而不是字节:

In [7]: hexlify(a).decode('ascii')
Out[7]: '9144776592'

1
使用 binascii.hexlify
>>> import binascii
>>> a = b'\x91\x44\x77\x65\x92'
>>> b = b'\x44\x45\x41\x44\x42\x45\x45\x46'
>>> binascii.hexlify(a)
b'9144776592'
>>> binascii.hexlify(b)
b'4445414442454546'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接