Текст преобразуется в строку из 1 и 0, а затем в двоичный файл.Из двоичного файла я хочу иметь возможность прочитать его снова, но вывод другой.Я думаю, что проблема с двоичным чтением, но idk, где именно
import io
mytext = 'La tortilla de patatas siempre es redonda'
mylist = [('a', '101'), (' ', '110'), ('t', '010'), ('e', '011'), ('o', '0000'), ('r', '1000'), ('i', '0001'), ('d', '1001'), ('s', '1110'), ('L', '00110'), ('l', '11110'), ('p', '11111'), ('m', '00111'), ('n', '00100'), ('.', '00101')]
mydict = {k:v for (k,v) in mylist}
invdict = {v:k for (k,v) in mylist}
ciphtext = ''
newstr = ''
f = io.BytesIO()
for char in mytext:
ciphtext += mydict[char]
for i in range(0,len(ciphtext),8):
f.write(bytes(chr(int(ciphtext[i:i+8],2)),'utf-8'))
f.seek(0)
for x in f.read():
chain = bin(x)[2:] #cuts the '0b' part from a binary
long = len(chain)
if long == 8:
newstr += chain
else:
newstr += '0'*(8-long)+chain #sets length to 8, bc for strings 01 != 001
print(ciphtext)
print(newstr)
Почему выход отличается?Как я могу это исправить?