Преобразовать строку, состоящую из шестнадцатеричных чисел, в двоичную - PullRequest
0 голосов
/ 04 мая 2019

У меня есть строка " 39 14 40 00 21 74 D1 69 22 53 AA 36 A4 08 2F 49". Каждое число является шестнадцатеричным значением. Я хочу преобразовать каждое отдельное шестнадцатеричное число в двоичное число. Я знаю, что Python не понимает шестнадцатеричные значения и т. Д. Проблема, которую я вижу в этой строке, я выбираю текстовый файл и сохраняю его как строку. После сохранения в виде строки Python не позволяет мне конвертировать каждое отдельное значение в шестнадцатеричное.

Когда я сохраняю заданную строку из файла, я сохраняю ее как список или строку. Список не может быть преобразован, но у меня возникли проблемы с преобразованием строки в шестнадцатеричное. Пример Я хочу, чтобы первое значение 39 было записано как 0011 1001 и так далее в двоичном виде.

if line1.startswith("Start Test tb_sctpReadEFuseTest"):
    hex_line = str([next(islice(file_name, 38, 39))[6:55]])
    binary_form= ''.join(['{0:08b}'.format(x) for x in hex_line])
    print(hex_line)
    print(binary_form)

Строка: 39 14 40 00 21 74 D1 69 22 53 AA 36 A4 08 2F 49 Выход: 0011 1001 0001 0100 0100 0000 0000 0000 0010 0001 0111 0100 и т. Д.

Ответы [ 2 ]

1 голос
/ 04 мая 2019

Вы можете использовать выражение генератора для генерации шестнадцатеричных цифр, а затем отформатировать в двоичном виде, как это:

>>> s = '39 14 40 00 21 74 D1 69 22 53 AA 36 A4 08 2F 49'
>>> ' '.join('{:0>4b}'.format(int(y, 16)) for x in s.split() for y in x)
'0011 1001 0001 0100 0100 0000 0000 0000 0010 0001 0111 0100 1101 0001 0110 1001 0010 0010 0101 0011 1010 1010 0011 0110 1010 0100 0000 1000 0010 1111 0100 1001'

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

0 голосов
/ 04 мая 2019

Формат здесь не поможет, так как он ожидает числовое значение, а не строку.Одним из способов (хотя и «грубой силы») может быть создание словаря, преобразующего каждый символ из «0» в «F» в их двоичное представление:

hex2bin = { '0': '0000', '1': '0001' ... 'F': '1111'}

и используйте это в своем понимании, что вам, безусловно, придется адаптироваться, так как вам нужно будет проанализировать каждый символ и пропустить пробелы.Извините, я действительно плохо разбираюсь и не могу вам больше помочь, но вы поняли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...