【问题标题】:Convert STDOUT hex output to string in Python在 Python 中将 STDOUT 十六进制输出转换为字符串
【发布时间】:2012-10-16 14:21:07
【问题描述】:

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

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

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

我希望去掉这种类型的字符串 '\x',我只对后面的两个十六进制字符感兴趣。最好,我想把这样的字符串转换成;

5f 63 6c 6f 73 65 28

原始输入被解释为字符串,但我不能简单地在 Python 本身中去除 \x。如果我能在 Python 内部解决这个转换就好了?

【问题讨论】:

    标签: python string hex


    【解决方案1】:
    >>> '\x12\x34\x56\x78'.encode('hex')
    '12345678'
    

    【讨论】:

      【解决方案2】:

      对于Python 3,可以这样做:

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

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

      Here is the question 前段时间我自己遇到过这个问题。

      【讨论】:

        【解决方案3】:

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

        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', ' ')
        

        【讨论】:

        • 谢谢,这正是我要找的 :-)
        猜你喜欢
        • 1970-01-01
        • 2019-02-10
        • 2014-03-07
        • 1970-01-01
        • 2020-06-20
        • 2015-01-06
        • 1970-01-01
        • 1970-01-01
        • 2018-01-31
        相关资源
        最近更新 更多