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

Saz*_*zzy 4 python string hex

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

>>> a = b'\x91\x44\x77\x65\x92'
>>> b = b'\x44\x45\x41\x44\x42\x45\x45\x46'
>>> a
>>> ?Dwe?
>>> b
>>> 'DEADBEEF'
Run Code Online (Sandbox Code Playgroud)

ab的期望结果:

>>> 9144776592
>>> '4445414442454546'
Run Code Online (Sandbox Code Playgroud)

谢谢.

ale*_*cxe 7

>>> a = b'\x91\x44\x77\x65\x92'
>>> a.encode("hex")
'9144776592'
>>> b.encode('hex')
'4445414442454546'
Run Code Online (Sandbox Code Playgroud)

请注意,使用它并不好encode('hex')- 这是一个解释原因:

您使用十六进制编解码器的方式在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'
Run Code Online (Sandbox Code Playgroud)