如何在Python中将字符串转换为十六进制字符串?

时间:2011-02-23 15:07:31

标签: python string binary hex

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

有关如何在Python中最好地解决此问题的任何建议?

5 个答案:

答案 0 :(得分:19)

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

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

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

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

答案 1 :(得分:3)

>>> binary = '10010111'
>>> int(binary,2)
151
>>> hex(int(binary,2))
'0x97'

我希望这有帮助!

答案 2 :(得分:2)

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

>> int("1010",2)
10

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

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

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

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

答案 3 :(得分:0)

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

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

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

答案 4 :(得分:0)

我们可以像Mark Byers所说的那样将字符串格式化。或者以其他方式我们可以在另一种方法中将字符串格式化,如下所示:

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

要使大写字母之间的字母表为大写,请尝试:

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

希望这有用。