Как мне преобразовать строку битов в шестнадцатеричную строку в Python? - PullRequest
2 голосов
/ 23 февраля 2011

У меня есть битовая строка из 32 символов, которую мне нужно представить как шестнадцатеричный в Python.Например, строка "10000011101000011010100010010111" также должна быть выведена как "83A1A897".

Есть предложения о том, как лучше всего это сделать в Python?

Ответы [ 5 ]

19 голосов
/ 23 февраля 2011

Для форматирования в шестнадцатеричный формат вы можете использовать функцию hex:

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

Или получить его в том формате, который вы запрашивали:

>>> '%08X' % int('10000011101000011010100010010111', 2)
83A1A897
3 голосов
/ 23 февраля 2011
>>> binary = '10010111'
>>> int(binary,2)
151
>>> hex(int(binary,2))
'0x97'

Надеюсь, это поможет!

2 голосов
/ 23 февраля 2011

Вы можете сделать это очень легко с помощью встроенных функций. Первое, что вы хотите сделать, это преобразовать ваш двоичный файл в целое число:

>> int("1010",2)
10

Вторым шагом будет представление этого значения в шестнадцатеричном виде:

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

в случае, если вам не нужна заранее заданная длина шестнадцатеричной строки, просто используйте:

>> "%X" % int("1010",2)
'A'
>> "0x%X" % int("1010",2)
'0xA'
0 голосов
/ 18 марта 2015

Ну, мы могли бы форматировать строки так, как сказал Марк Байерс. Или иначе мы могли бы форматировать строки другим способом, как показано ниже:

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

Чтобы сделать алфавиты между гексами в верхнем регистре, попробуйте это:

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

Надеюсь, это полезно.

0 голосов
/ 23 февраля 2011

Для чтения числа в любой базе используйте встроенную функцию int с необязательным вторым параметром, определяющим базу (в данном случае 2).

Чтобы преобразовать число в строку в шестнадцатеричной формепросто используйте функцию hex.

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