• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Помогите с алгоритмом

  • Автор темы Tatarin
  • Дата начала
Статус
Закрыто для дальнейших ответов.
T

Tatarin

Всем здравствуйте!
Я пишу нечто вроде архиватора основоного на алгоритме сжатия данных методом Шенона-Фано учебное пособие (и уже всех этим порядком достал) и уменя возникают проблема за проблемой и вот:
вопрос при кодировании кажному символу присваивается определенный код например 'a' 00, 'b' 010 итп (не путать с кодировкой ASCII) затем я представляю символы в бинарном виде по ASCII получается нечто вроде таблицы.
теперь мне надо запихать таблицу т.е. символы в бинарном виде и их коды полученые по алгоритму в бинарный фаил. вроде с запихиванием проблем не возникает но вот как сделать так чтоб потом эту таблицу можно было из файла считать ведь там получается нечто вроде 01010101010101000101010101010 сплошной код, я конечно понимаю что каждый символ 8 бит но коды полученые для символов алгоритмом могут быть разной длинны, как быть

и если кто знаком с этим методом сжатия напишите как лучше оформить весь процесс
 
G

grigsoft

Ну вообщем-то процесс распаковки тоже в методе объяснен - скорее всего коды отличаются началом, так что никакой другой код не начинается с 00 и 010. Поэтому 00010 однозначно раскодируются как 'аб'. Думаю, в интернете полно реализаций. Навскидку могу предложить промежуточный класс, извлекающий по биту последовательно, и обработчик, который добавляет к текущему коду отданные биты и проверяет по таблице - не является ли это кодом некоего символа.
 
T

Tatarin

Да коды действительно различаются началом но проблема в том что если я занесу таблицу для раскодирования в бинарный фаил( как сплошную строку бит) и допустим я сичтатаю 8 бит первого символа , как я узнаю сколько бит считать для кода этого символа ведь он не факт что будет 8 бит а скорее всего как в примере 001 или 10011, как узнать когда я будусчитывать уже второй символ и его код?
 
G

grigsoft

ну для хранения самой таблицы, конечно, надо внести поправки - например число бит в различных символах - от 3 до 16. Это кодируется 4 битами. Вот и делай таблицу так: 4 бита (длина следующего символа), биты символа, 4 бита длина, символ и т.д.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!