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

时间:2013-08-18 10:45:05

标签: python string hex

我正在寻找如何获取十六进制值,并将它们转换为字符串或整数。 例子:

>>> a = b'\x91\x44\x77\x65\x92'
>>> b = b'\x44\x45\x41\x44\x42\x45\x45\x46'
>>> a
>>> �Dwe�
>>> b
>>> 'DEADBEEF'

a b 的理想结果:

>>> 9144776592
>>> '4445414442454546'

谢谢。

3 个答案:

答案 0 :(得分:7)

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

请注意,使用encode('hex')并不好 - 这是explanation原因:

  

您使用十六进制编解码器的方式在Python 2中工作,因为您可以调用   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'

答案 1 :(得分: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'

答案 2 :(得分: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'