Хранение таблицы кодов в сжатом файле после сжатия Хаффмана и построение дерева для распаковки из этой таблицы
Я писал программу сжатия Хаффмана с использованием C++, но столкнулся с проблемой структуры сжатого файла. Он должен хранить некоторую структуру в моем новом файле, которая может помочь мне декодировать этот файл. Я решил написать таблицу кодов в начале этого файла, а затем построить дерево из этой таблицы для декодирования следующего содержимого, но я не знаю, как лучше хранить таблицу (я имею в виду, я не знаю, структура таблицы, я знаю, как писать вещи в двоичном режиме) и как построить дерево из этой таблицы. Извините за мой английский. Заранее спасибо.
2 ответа
Вы можете попробовать написать заголовок в сжатом файле с последовательностью символов в зависимости от вероятности их появления в тексте. Или писать письма с указанием их вероятности. При этом вы используете тот же процесс для построения дерева для сжатия и распаковки. Что касается того, как построить само дерево, я полагаю, вам придется провести небольшое исследование и вернуться к вам, если возникнут проблемы.
Вам не нужно передавать вероятности или дерево. Все, что нужно декодеру, - это количество битов, назначенных каждому символу, и канонический способ назначения значений битов каждому символу, что согласовано как кодером, так и декодером. Смотрите канонический код Хаффмана.