Как сжать текст ascii без накладных расходов

Я хочу сжать небольшой текст (400 байт) и распаковать его с другой стороны. Если я делаю это с помощью стандартного компрессора, такого как rar или zip, он записывает метаданные вместе со сжатым файлом, и он больше, чем сам файл ..

Есть ли способ сжать файл без этих метаданных и открыть его на другой стороне с известными заранее параметрами?


person Anderson    schedule 06.12.2012    source источник
comment
stackoverflow.com/questions/732578/   -  person Paul Collingwood    schedule 06.12.2012
comment
Расскажите подробнее о границах ваших входных данных - это словарные английские слова?   -  person Ujjwal Singh    schedule 06.12.2012
comment
Нет, это не словарные слова, это символы ASCII.   -  person Anderson    schedule 06.12.2012


Ответы (2)


Вы можете выполнить сжатие необработанного дефлятирования с помощью zlib. Это позволяет избежать даже шестибайтового заголовка и трейлера формата zlib.

Однако вы обнаружите, что у вас по-прежнему не будет большого сжатия, если оно вообще будет, всего лишь с 400 байтами ввода. Алгоритмам сжатия нужно гораздо больше истории, чтобы начать работу, чтобы построить статистику и найти избыточность в данных.

Вам следует рассмотреть либо словарный подход, при котором вы создаете словарь репрезентативных строк, чтобы предоставить компрессору что-то для работы, либо вы можете рассматривать последовательность этих 400-байтовых строк как один поток, который распаковывается как поток на другой конец.

person Mark Adler    schedule 06.12.2012

Вы можете посмотреть на сжатие, используя коды Хаффмана. В качестве примера посмотрите здесь и здесь.

person Javad M. Amiri    schedule 06.12.2012
comment
Пробовал алгоритм Хаффмана, из файла с 357 байтами он сжал меня до 5335 байт .. Может я не понимаю, как это работает? Я использовал эту реализацию code.activestate.com/recipes/ - person Anderson; 06.12.2012