3

我一直在寻找将以下类型的十六进制输出转换为 Python 中的字符串字符的方法。输出来自STDOUT我代码的前面部分,我希望能够进一步处理它。

让我给你一些我想要转换的字符串的例子:

\x5f\x63\x6c\x6f\x73\x65\x28

我希望这种类型的字符串被剥离 '\x' 并且我只对后面的两个十六进制字符感兴趣。最好,我想将这样的字符串转换为;

5f 63 6c 6f 73 65 28

原始输入被解释为一个字符串,但我不能简单地剥离\xPython 本身。如果我可以在 Python 内部解决这种转换,那会很棒吗?

4

3 回答 3

3
>>> '\x12\x34\x56\x78'.encode('hex')
'12345678'
于 2012-10-16T14:22:56.153 回答
2

为此Python 3可以这样做:

>>> s = b'\x5f\x63\x6c\x6f\x73\x65\x28'
>>> import binascii
>>> binascii.hexlify(s)
b'5f636c6f736528'

encode在 Python 3 中返回错误,因为从二进制字符串到二进制字符串的转换。

这是我前一段时间自己遇到这个问题的问题。

于 2012-10-16T14:33:01.347 回答
1

可以只使用基本的字符串函数:

s = r'\x5f\x63\x6c\x6f\x73\x65\x28'
s.replace(r'\x', ' ').lstrip()
# '5f 63 6c 6f 73 65 28'

# or
s[2:].replace(r'\x', ' ')
于 2012-10-16T14:27:59.913 回答