Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python,十六进制值转换为字符串/整数_Python_String_Hex - Fatal编程技术网

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

python,十六进制值转换为字符串/整数,python,string,hex,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 >>> '

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

>>> a = b'\x91\x44\x77\x65\x92'
>>> b = b'\x44\x45\x41\x44\x42\x45\x45\x46'
>>> a
>>> �Dwe�
>>> b
>>> 'DEADBEEF'
ab的预期结果:

>>> 9144776592
>>> '4445414442454546'
谢谢。

使用:

使用:

如果您想要
str
而不是字节:

In [7]: hexlify(a).decode('ascii')
Out[7]: '9144776592'
请注意,使用
encode('hex')
是不好的,原因如下:

您使用十六进制编解码器的方式在Python2中起作用,因为您可以调用 Python2中8位字符串上的encode(),即可以对某些内容进行编码 这已经被编码了。那没有道理。encode()用于 将Unicode字符串编码为8位字符串,而不是用于编码8位字符串 字符串作为8位字符串

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

使用更简单、更好,它是为二进制和ascii之间的转换而设计的,适用于python 2和3:

>>> import binascii
>>> binascii.hexlify(b'\x91\x44\x77\x65\x92')
b'9144776592'
In [7]: hexlify(a).decode('ascii')
Out[7]: '9144776592'
>>> a = b'\x91\x44\x77\x65\x92'
>>> a.encode("hex")
'9144776592'
>>> b.encode('hex')
'4445414442454546'
>>> import binascii
>>> binascii.hexlify(b'\x91\x44\x77\x65\x92')
b'9144776592'