Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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 - Fatal编程技术网

Python十六进制字符串

Python十六进制字符串,python,Python,我有三个十六进制字符串: hex1 = "e0" hex2 = "aa" hex3 = "b0" string = "\\x"+hex1+"\\x"+hex2+"\\x"+hex3 print string 在将“\x”附加到这三个字符串之后连接这三个字符串时,无法获得其字符表示形式 我得到的输出为\xe0\xaa\xb0 但是当我用一行来定义它的时候 string = "\xe0\xaa\xb0" 然后打印字符串,得到正确的输出,即ર 我上次的尝试有什么问题?试试看 lst = [

我有三个十六进制字符串:

hex1 = "e0"
hex2 = "aa"
hex3 = "b0"
string = "\\x"+hex1+"\\x"+hex2+"\\x"+hex3

print string
在将“\x”附加到这三个字符串之后连接这三个字符串时,无法获得其字符表示形式

我得到的输出为
\xe0\xaa\xb0

但是当我用一行来定义它的时候

string = "\xe0\xaa\xb0"
然后打印字符串,得到正确的输出,即

我上次的尝试有什么问题?

试试看

lst = [
    chr(int(hex1, 16)),
    chr(int(hex2, 16)),
    chr(int(hex3, 16))
]
s = ''.join(lst)  # '\xe0\xaa\xb0'
您的方法将不起作用,因为初始字符串
“\\x”
被解释为字符串
“\x”
——正如您可能看到的,使用单个反斜杠(
“\x”
)创建初始字符串是无效的

试试看

lst = [
    chr(int(hex1, 16)),
    chr(int(hex2, 16)),
    chr(int(hex3, 16))
]
s = ''.join(lst)  # '\xe0\xaa\xb0'

您的方法将不起作用,因为初始字符串
“\\x”
被解释为字符串
“\x”
——正如您可能看到的,使用单个反斜杠(
“\x”
)创建初始字符串是无效的

Python附带了很多有用的库,并且有一个Python库可以满足您的需要
binascii.unexlify
将类似于
'010203'
的十六进制序列转换为字节
'\x01\x02\x03'

>>> hex1 = "e0"
>>> hex2 = "aa"
>>> hex3 = "b0"
>>> s = hex1+hex2+hex3
>>> import binascii
>>> binascii.unhexlify(s)
'\xe0\xaa\xb0'
甚至有一种方法可以实现您最初尝试的操作:

>>> hex1 = "e0"
>>> hex2 = "aa"
>>> hex3 = "b0"
>>> s= "\\x"+hex1+"\\x"+hex2+"\\x"+hex3
>>> s.decode('string-escape')
'\xe0\xaa\xb0'

Python附带了很多有用的库,并且有一个Python库可以满足您的需要
binascii.unexlify
将类似于
'010203'
的十六进制序列转换为字节
'\x01\x02\x03'

>>> hex1 = "e0"
>>> hex2 = "aa"
>>> hex3 = "b0"
>>> s = hex1+hex2+hex3
>>> import binascii
>>> binascii.unhexlify(s)
'\xe0\xaa\xb0'
甚至有一种方法可以实现您最初尝试的操作:

>>> hex1 = "e0"
>>> hex2 = "aa"
>>> hex3 = "b0"
>>> s= "\\x"+hex1+"\\x"+hex2+"\\x"+hex3
>>> s.decode('string-escape')
'\xe0\xaa\xb0'

\\x
中删除一个额外的\并尝试追加。很抱歉,输入错误。请阅读我上面的评论。从
\\x
中删除一个额外的\并尝试附加。很抱歉,输入错误。请阅读我上面的评论。