【问题标题】:How do I convert a string of bits to a hex string in Python?如何在 Python 中将一串位转换为十六进制字符串?
【发布时间】:2011-07-02 20:04:56
【问题描述】:

我有一个 32 个字符的位串,我需要在 Python 中将其表示为十六进制。比如字符串"10000011101000011010100010010111"也需要输出为"83A1A897"

关于如何在 Python 中最好地解决这个问题有什么建议吗?

【问题讨论】:

标签: python string binary hex


【解决方案1】:

好吧,我们可以像 Mark Byers 所说的那样格式化字符串。或者以其他方式,我们可以用下面给出的另一种方法格式化字符串:

>>> print('{0:x}'.format(0b10000011101000011010100010010111))
83a1a897

要将十六进制之间的字母设为大写,请尝试以下操作:

>>> print('{0:X}'.format(0b10000011101000011010100010010111))
83A1A897

希望这有帮助。

【讨论】:

    【解决方案2】:

    您可以使用内置函数轻松完成此操作。 您要做的第一件事是将二进制转换为整数:

    >> int("1010",2)
    10
    

    然后第二步是将其表示为十六进制:

    >> "%04X" % int("1010",2)
    '000A'
    

    如果您不想要任何预定义长度的十六进制字符串,那么只需使用:

    >> "%X" % int("1010",2)
    'A'
    >> "0x%X" % int("1010",2)
    '0xA'
    

    【讨论】:

    • 这是正确答案。 hex(int("10", 2)) 也可以,但要点是您必须为 int 函数的第二个参数传入一个值。它的签名是def __init__(self, x, base=10):
    【解决方案3】:
    >>> binary = '10010111'
    >>> int(binary,2)
    151
    >>> hex(int(binary,2))
    '0x97'
    

    我希望这会有所帮助!

    【讨论】:

      【解决方案4】:

      要读入任何基数的数字,请使用内置的 int 函数和可选的第二个参数指定基数(在本例中为 2)。

      要将数字转换为十六进制形式的字符串,只需使用hex 函数。

      >>> number=int("10000011101000011010100010010111",2)
      >>> print hex(number)
      0x83a1a897L
      

      【讨论】:

        【解决方案5】:

        要格式化为十六进制,您可以使用 hex 函数:

        >>> hex(int('10000011101000011010100010010111', 2))
        0x83a1a897
        

        或者按照您要求的格式获取它:

        >>> '%08X' % int('10000011101000011010100010010111', 2)
        83A1A897
        

        【讨论】:

        猜你喜欢
        • 2013-02-07
        • 2014-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-05
        • 2019-02-10
        • 2014-03-07
        • 1970-01-01
        相关资源
        最近更新 更多