Система кодирования, которая назначает одинаковое количество бит для каждого символа
-
29-09-2020 - |
Вопрос
Я пытаюсь получить двоичную строку, преобразованную из текста текстового файла, я могу это получить, но проблема в том, что мне нужно, чтобы каждый символ был представлен одинаковым количеством бит, но я получаю не это. (пожалуйста, смотрите приведенный ниже код Python и соответствующий вывод).Например, персонаж i
представлен 1101001
, длина которого составляет 7 бит, но символ !
представлен 100001
, длина которого составляет 6 бит.
Существует ли какая-либо система кодирования/декодирования, в которой каждый символ занимает одинаковое количество бит?
content = open('a.txt', 'r').read()
test_str = content
# using join() + ord() + format() ... Converting String to binary
Binary = ' '.join(format(ord(i), 'b') for i in test_str)
#Decimal=int(Binary, 2)
# printing original string
print("The original string is : " + str(test_str))
# printing result
print("The string after Binary conversion : \n" + str(Binary))
Выход:
The original string is : Hi! Is there a solution?
The string after Binary conversion :
1001000 1101001 100001 100000 1001001 1110011 100000 1110100 1101000 1100101 1110010 1100101 100000 1100001 100000 1110011 1101111 1101100 1110101 1110100 1101001 1101111 1101110 111111
Решение
Обычный способ решить эту проблему — добавить ведущие нули.Так i
по-прежнему будет представлен 1101001
, пока !
будет представлен 0100001
.
Это похоже на то, как цифровые часы могут использовать 06:40 для 6:40 или 12:05 для 12:5.