Zlib: различия между функциями `deflate` и` сжатия`

Каковы различия между функциями deflate() и compress() в zlib?

Я просматривал онлайн примеры и некоторые использовали deflate, в то время как другие использовали компресс.

Как я должен решить, какую ситуацию я бы использовал один над другой?


person mma1480    schedule 15.04.2012    source источник


Ответы (1)


compress() используется для сжимания данных в одном вызове и всегда сжимается в формате Zlib , который выключает данные с двумя байтовым заголовком и четырехбайтовым прицепом проверки значения. compress() используется сам по себе.

deflate() используется для сжимания данных куски кадром и / или сжать на другие форматы, такие как GZIP -Prapped или RAW , а также с другими вариантами, такими как память Уровни и стратегии сжатия.

Вы будете использовать compress(), если у вас есть все данные, доступные одновременно и достаточно памяти, чтобы удерживать результат, и вы хотите, чтобы сжатие по умолчанию, использование памяти и стратегии. В противном случае вы бы использовали deflate().

Deflate () не используется сама. Вам необходимо использовать deflateInit() или deflateInit2() для инициализации структуры z_stream, используемой deflate(). Затем вы называете deflate() одно или несколько раз, чтобы принять данные, чтобы сжать и сделать доступным результатом. В конце deflateEnd() вызывается для освобождения ресурсов памяти, используемых в структуре. Вы можете прочитать документацию в zlib.h и на http://zlib.net/zlib_how.html Для получения дополнительной информации.

person Mark Adler    schedule 16.04.2012
comment
Mark Adler - Определенно власть на этом. - person Xenon; 16.04.2012
comment
Спасибо. Я прочитал некоторые из этого, но не совсем понял это сначала. Это была слишком много информации, но я ушел и перечитал его. - person mma1480; 16.04.2012
comment
Отлично ... Теперь я знаю, почему это называется Адлер-32 - person raj_gt1; 27.11.2012
comment
@Markadler очень подробный ответ. Любой хороший источник / книга, чтобы узнать больше о zlib или gzip? - person Govinda Sakhare; 23.06.2020