如何将十六进制字符串“\ x89PNG”转换为python中的纯文本

时间:2012-07-27 06:04:33

标签: python hex ascii

我有一个字符串"\x89PNG",我想将其转换为纯文本。

我提到http://love-python.blogspot.in/2008/05/convert-hext-to-ascii-string-in-python.html 但我发现它有点复杂。这可以用更简单的方式完成吗?

1 个答案:

答案 0 :(得分:4)

\x89PNG 纯文字。只是尝试打印它:

>>> s = '\x89PNG'
>>> print s
┴PNG

链接中的配方不执行任何操作:

>>> hex_string = '\x70f=l\x26hl=en\x26geocode=\x26q\x3c'
>>> ascii_string = reformat_content(hex_string)
>>> hex_string == ascii_string
True

真正的十六进制< - >明文编码\解码是小菜一碟:

>>> s.encode('hex')
'89504e47'
>>> '89504e47'.decode('hex')
'\x89PNG'

但是,您可能会遇到'\x70f=l\x26hl=en\x26geocode=\x26q\x3c'等字符串问题,其中'\''x'是不同的字符:

>>> s = '\\x70f=l\\x26hl=en\\x26geocode=\\x26q\\x3c'
>>> print s
\x70f=l\x26hl=en\x26geocode=\x26q\x3c

在这种情况下,string_escape编码非常有用:

>>> print s.decode('string_escape')
pf=l&hl=en&geocode=&q<

有关编码的更多信息 - http://docs.python.org/library/codecs.html#standard-encodings