Куда деваются нули?
Реализовывал систему кодирования и декодирования, но в процессе куда-то деваются нули из строки. По заданию по пути надо было преобразовать в аски(в символах аски текст хранится в файле)
['10110011', '11000010', '11011100', '11110010', '00011100', '10011010',....]
Каждая ячейка массива с помощью:
for i in range(len(self.text_out)):
self.text_out[i] = chr(int(self.text_out[i],2))
преобразовывалась в символ аски. Функция которая расшифровывает и составляет алфавит из предшествующей информации(проверял, там всё нормально), далее должна преобразовать набор аски символов в строку, состоящую из 0 и 1, но что то шло не так, и я решил запихнуть для проверки разбитие по байтам, но байты выходили разные. Реализовывал перевод из аски:
self.text_out = []
for i in range(len(self.text_in)):
self.text_out.append(bin(ord(self.text_in[i]))[2:]) #переводим текст в бинарную строку
self.str_bin = "".join(self.text_out)
self.kostyl1 = []
for i in range(math.ceil(len(self.str_bin) / 8)):
if i != math.ceil(len(self.str_bin) / 8) - 1: # разбиваем по байтам РАДИ ПРОВЕРКИ
self.kostyl1.append(self.str_bin[i * 8:i * 8 + 8])
else:
self.kostyl1.append("0" * (8 - len(self.str_bin[i * 8:])) + self.str_bin[i * 8:])
Но получался не тот массив, что указан в самом верху, а другой:
['10110011', '11000010', '11011100', '11110010', '11100100', '11010110', ....]
Как мы можем видеть, отличия начинаются с пятого элемента, где пропало три нуля.
Источник: Stack Overflow на русском