我有字符串x = '0x32'
,并希望将其转换为y = '\x32'
请注意len(x) == 4
和len(y) == 1
。
我已尝试使用z = x.replace("0", "\\")
,但这会导致z = '\\x32'
和len(z) == 4
。我怎样才能做到这一点?
答案 0 :(得分:5)
您不必那么难:您可以使用int(..,16)
来解析0x...
形式的十六进制字符串。接下来,您只需使用chr(..)
将该数字转换为具有该Unicode的字符(如果代码小于128 ASCII)代码:
y = chr(int(x,16))
这导致:
>>> chr(int(x,16))
'2'
但是\x32
等于'2'
(您可以在ASCII表中查找):
>>> chr(int(x,16)) == '\x32'
True
和
>>> len(chr(int(x,16)))
1
答案 1 :(得分:3)
试试这个:
z = x[2:].decode('hex')
答案 2 :(得分:2)
在引用的字符串中包含git cherry-pick --abort
等代码点的能力对程序员来说是一种便利,它只能在源代码中的文字值中工作。一旦你在内存中操作字符串,你就无法再使用该选项,但还有其他方法可以根据代码点值将字符转换为字符串。
另请注意,'\x32'
会产生与'\x32'
完全相同的字符串;它的输入方式不同。
给定包含十六进制文字的字符串,您可以使用'2'
将其转换为数字值。获得数值后,可以通过int(str,16)
将其转换为具有该代码点的字符。所以把它们放在一起:
chr()