2016-09-28 7 views
2

Мне поручено искать 0 и 1 в реальном учебнике, чтобы расшифровать ASCII-сообщение от него. Проблема в том, что очень сложно найти все 0 и 1, и у меня такое чувство, что я пропускаю их много. Это полностью испортило преобразование ASCII. Некоторые из вещей, которые я пробовал:Поток Ascii с отсутствующими битами (без контроля четности)

  • слова «Синхронизировать» путем обнаружения пробелов (или что-то близко к пространству)
  • пытается исправить символы основаны на предположении только символы алфавита (AZ, AZ)
  • пытаясь исправить слова, исходя из предположения о частоте символов на языке (голландский)

Но я все еще не получал много усилий, поскольку основная проблема заключается в синхронизации (когда начинается новый char)? , Мне, вероятно, придется снова пробежать книги (вздох, 3-й раз или около того), но мне было интересно, есть ли у вас, ребята, какие-либо другие идеи по поводу проблемы с битами в двоичном потоке ASCII?

+1

этот вопрос не имеет смысла в его нынешнем виде ... просьба представить (небольшой пример) пример вход и ожидаемый результат (по крайней мере ... его, вероятно, хорошая идея опубликовать какой-то код, который вы пробовали, который не дал правильных результатов, а также каким образом результаты не соответствуют) –

+2

Я не уверен, что вы подразумеваете под «в реальном учебнике» - сканируете ли вы печатную книгу (на бумаге) и как-то теряете биты с устройства сканера (или из сканированного файла изображений или данных)? Вы сканируете книгу и ищете напечатанные символы «0» и «1», но сканер не записывает все символы (или неверно идентифицирует их как капитал-O или нижний регистр-L)? Или вы начинаете с полного файла, представляющего содержимое книги (PDF? ASCII? LaTeX? XML? Bitmap?), И каким-то образом не получаете все данные, которые вы ожидаете от него? –

ответ

0
all_ones_and_zeros = re.findall("[01]",corpus_of_text) 
BITS_PER_ASCII = 8 #(ascii characters are all the ordinals from 0-255 ... or 8 bits) 
asciis = zip([iter(all_ones_and_zeros)]*BITS_PER_ASCII) 
bins = [''.join(x) for x in asciis] 
chars = [chr(int(y,2)) for y in bins] 

print "MSG:",chars 

Я думаю ... это не очень понятно, что ваш вход или ожидается выход ...