Простое сжатие в C ++ - PullRequest
       4

Простое сжатие в C ++

2 голосов
/ 07 декабря 2010

у нас есть приложение C ++ MFC и C # Web Service. Они обмениваются данными по HTTP, но поскольку они обмениваются текстовыми данными, сжатие очень поможет. Но по некоторым причинам мы не можем использовать внешнюю библиотеку.

Нам нужно сжать массив байтов с одной стороны и распаковать его с другой стороны.

Что мы должны использовать для сжатия наших данных? Лучший сценарий был бы, если в MFC / win32 api есть что-то. Или есть какой-то упрощенный код с максимальной лицензией LGPL, который мы могли бы интегрировать в наш проект?

Ответы [ 3 ]

3 голосов
/ 07 декабря 2010

Разве вы не можете просто включить сжатие HTTP? http://en.wikipedia.org/wiki/HTTP_compression

3 голосов
/ 07 декабря 2010

Как уже было сказано, zlib, вероятно, то, что вы ищете.

Есть несколько алгоритмов:

  • Пара deflate и inflate
  • zlib сама
  • lzo

Более простым, вероятно, является lzo (я советую передавать несжатый размер сбоку), но zlib тоже не очень сложен, и степень сжатия можно параметризировать (компромисс между скоростью и размером), что может быть плюсом в зависимости от ваши ограничения.

Для данных XML (так как вы говорили о веб-сервисах), LZO дал мне ~ 4-кратный коэффициент сжатия.

1 голос
/ 07 декабря 2010

zlib имеет очень либеральную лицензию .

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