#python #binary #decimal #ascii
Вопрос:
Я пытаюсь преобразовать двоичный код в десятичный в ASCII. Используя этот код, я могу взять двоичный ввод и разделить его на куски по 7 бит.
def binary_to_ascii7bits(bstring):
n = 7
byte = [bstring[i:i n] for i in range(0, len(bstring), n)]
print(byte)
Мне нужно уметь превращать каждую 7-разрядную подстроку в десятичное число, чтобы использовать функцию chr. Если я попытаюсь превратить этот список в строку, он напечатает, например, «[‘1111000’]», но у меня не может быть скобок и апострофов в строке. Что я могу сделать, чтобы исправить это?
Комментарии:
1. Можете ли вы привести пример ввода?
2.
print('n'.join(byte))
?3. Вы знаете, что символы ASCII ниже 32, по существу, недоступны для печати (некоторые из них являются элементами управления печатью, такими как вкладка и новая строка), поэтому ваш вывод может выглядеть странно в зависимости от предоставленной двоичной строки.
Ответ №1:
Прежде всего, для chr
функции это должно быть целое число, а не десятичное.
Добавьте понимание этого списка перед функцией печати —
byte = [chr(64 int(i)) for i in byte]
Это даст строку для байтов. Я думаю, это то, чего ты хочешь.
Ответ №2:
Вы можете добавить еще одну строку (как показано ниже), чтобы достичь того, что вы описали.
Вы должны int(..., 2)
преобразовать строковое представление двоичного числа в целое число. Затем подайте chr
заявку, чтобы получить персонажа. Эта процедура выполняется с использованием понимания (списка), так что результатом является список символов. Затем используйте join
для создания одной строки.
text = '1111000' * 10
def binary_to_ascii7bits(bstring):
n = 7
byte = [bstring[i:i n] for i in range(0, len(bstring), n)]
return ''.join(chr(int(x, 2)) for x in byte)
print(binary_to_ascii7bits(text)) # xxxxxxxxxx