В настоящее время я пишу конвертер ascii-binary/binary-ascii в Python для школьного проекта, и у меня есть проблема с преобразованием из ascii (String text) в двоичный. Идея состоит в том, чтобы напечатать результат в тесте() в нижней части кода.Преобразование двоичных файлов в ASCII и ASCII в двоичный файл
При выполнении кода в WingIDE, возникает ошибка: На линии, начиная с
bnary = bnary + binary[chnk]
KeyError: «Норвегия электрошокового Польша 30:28 и испортит день рождения Белецкого в.»
То, что я пытаюсь сделать здесь, чтобы преобразовать строку текста, хранящегося в «text.txt» в строку целых чисел, а затем распечатать эту бинарную строку.
Любая помощь очень ценится. Я попытался взглянуть на другие связанные с ascii-двоичным обращением вопросы, связанные с конверсией, но никто не работал для меня.
Мой код:
def code():
binary = {}
ascii = {}
# Generate ascii code
for i in range(0,128) :
ascii[format(i,'08b')] = chr(i)
# Reverse the ascii code, this will be binary
for k, v in ascii.iteritems():
binary[v] = binary.get(v, [])
binary[v].append(k)
return ascii
def encode(text,binary):
'''
Encode some text using text from a source
'''
bnary = ""
fi = open(text, mode='rb')
while True:
chnk = fi.read()
if chnk == '':
break
if chnk != '\n':
binry = ""
bnary = bnary + binary[chnk]
return bnary
def decode(sourcecode,n, ascii):
'''
Decode a sourcecode using chunks of size n
'''
sentence = ""
f = open(sourcecode, mode='rb') # Open a file with filename <sourcecode>
while True:
chunk = f.read(n) # Read n characters at time from an open file
if chunk == '': # This is one way to check for the End Of File in Python
break
if chunk != '\n':
setence = "" # The ascii sentence generated
# create a sentence
sentence = sentence + ascii[chunk]
return sentence
def test():
'''
A placeholder for some test cases.
It is recommended that you use some existing framework, like unittest,
but for a temporary testing in a development version can be done
directly in the module.
'''
print encode('text.txt', code())
print decode('sourcecode.txt', 8, code())
test()
FYI, "Норвегия электрошокового Польша 30:28 и испортить день рождения Белецкого в." это содержимое «text.txt». –
Просьба уточнить, что такое преобразование между ASCII и двоичными средствами. Вы имеете в виду преобразование целого числа, сохраненного в двоичном формате, в его представление ASCII и обратно? Если да, то в какой базе в ASCII: двоичный, десятичный или другой? Если не так, то что вы имеете в виду? (Я прошу это перед чтением вашего кода, так как эти вопросы имеют основополагающее значение для оценки вашего кода.) –
Преднамеренно ли у вас есть 'двоичный',' bnary' и 'binry' в вашем методе' encode'? –