1s и 0s строка в двоичный файл и снова в строку - PullRequest
0 голосов
/ 13 марта 2019

Текст преобразуется в строку из 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)

Почему выход отличается?Как я могу это исправить?

...