【发布时间】:2011-07-02 20:04:56
【问题描述】:
我有一个 32 个字符的位串,我需要在 Python 中将其表示为十六进制。比如字符串"10000011101000011010100010010111"也需要输出为"83A1A897"。
关于如何在 Python 中最好地解决这个问题有什么建议吗?
【问题讨论】:
我有一个 32 个字符的位串,我需要在 Python 中将其表示为十六进制。比如字符串"10000011101000011010100010010111"也需要输出为"83A1A897"。
关于如何在 Python 中最好地解决这个问题有什么建议吗?
【问题讨论】:
好吧,我们可以像 Mark Byers 所说的那样格式化字符串。或者以其他方式,我们可以用下面给出的另一种方法格式化字符串:
>>> print('{0:x}'.format(0b10000011101000011010100010010111))
83a1a897
要将十六进制之间的字母设为大写,请尝试以下操作:
>>> print('{0:X}'.format(0b10000011101000011010100010010111))
83A1A897
希望这有帮助。
【讨论】:
您可以使用内置函数轻松完成此操作。 您要做的第一件事是将二进制转换为整数:
>> 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):
>>> binary = '10010111'
>>> int(binary,2)
151
>>> hex(int(binary,2))
'0x97'
我希望这会有所帮助!
【讨论】:
要读入任何基数的数字,请使用内置的 int 函数和可选的第二个参数指定基数(在本例中为 2)。
要将数字转换为十六进制形式的字符串,只需使用hex 函数。
>>> number=int("10000011101000011010100010010111",2)
>>> print hex(number)
0x83a1a897L
【讨论】:
要格式化为十六进制,您可以使用 hex 函数:
>>> hex(int('10000011101000011010100010010111', 2))
0x83a1a897
或者按照您要求的格式获取它:
>>> '%08X' % int('10000011101000011010100010010111', 2)
83A1A897
【讨论】: