Какова наилучшая схема сжатия для небольших данных, таких как 1,66 КБ? - PullRequest
4 голосов
/ 24 мая 2010

Эти данные хранятся в массиве (с использованием C ++) и представляют собой повторение по 125 битов, каждый из которых отличается от другого. В конце также есть 8 сообщений по 12 символов ASCII. Пожалуйста, предложите, если я должен использовать дифференциальное сжатие в массиве, и если да, то как?

Или я должен применить какую-то другую схему сжатия ко всему массиву?

Ответы [ 2 ]

3 голосов
/ 24 мая 2010

Как правило, вы можете сжимать данные, которые имеют некоторую предсказуемость или избыточность.Сжатие на основе словаря (например, алгоритмы в стиле ZIP) традиционно плохо работает с небольшими порциями данных из-за необходимости совместного использования выбранного словаря.

В прошлом, когда я сжимал очень маленькие порции данных сНесколько предсказуемые шаблоны, я использовал SharpZipLib с пользовательским словарем.Вместо того, чтобы встраивать словарь в фактические данные, я жестко закодировал словарь в каждой программе, которая должна (де) сжимать данные.SharpZipLib предоставляет вам оба варианта: пользовательский словарь и отдельный словарь от данных.

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

0 голосов
/ 24 мая 2010

Вы не предоставили нам достаточно информации, чтобы помочь вам. Однако я настоятельно рекомендую книгу Сжатие текста Белла, Клири и Виттена , Не обманывайтесь названием; «Текст» здесь просто означает «без потерь» - все методы применимы к двоичным данным. Поскольку книга дорогая, вы можете попытаться получить ее по межбиблиотечному абонементу.

Кроме того, не забывайте об очевидных методах Берроуза-Уилера (bzip2) или Лемпеля-Зива (gzip, zlib). Вполне возможно, что один из этих методов будет хорошо работать для вашего приложения, поэтому прежде чем исследовать альтернативы, попробуйте сжать ваши данные стандартными инструментами .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...