zlib
Библиотека сжатия данных общего назначения, реализующая алгоритм DEFLATE. Она предоставляет функции для сжатия и распаковки данных в форматах, совместимых с gzip и PKZIP. Библиотека широко используется в приложениях и системах, где требуется эффективное сжатие данных, например, в сетевых протоколах (HTTP, SSH), файловых форматах (PNG, PDF) и архиваторах.
Особенности
- реализация алгоритма DEFLATE с настраиваемой степенью сжатия;
- поддержка форматов: сырой поток DEFLATE, zlib-обёртка и gzip-обёртка;
- функции для вычисления контрольных сумм CRC-32 и Adler-32;
- простая интеграция через заголовочный файл
zlib.h.
Основные компоненты
Библиотека состоит из нескольких модулей, предоставляющих функции для различных сценариев работы с данными (подробнее с документацией можно ознакомиться здесь).
Сжатие данных
Основной интерфейс для сжатия данных реализован через потоковый API, позволяющий обрабатывать данные по частям.
Основные функции:
deflateInit()/deflateInit2()— инициализация структуры потока для сжатия с заданным уровнем сжатия;deflate()— сжатие входных данных; может вызываться многократно;deflateEnd()— завершение сжатия и освобождение ресурсов;deflateReset()— сброс состояния потока для повторного использования;deflateParams()— динамическое изменение параметров сжатия;deflateBound()— оценка максимального размера сжатых данных.
Распаковка данных
Аналогично сжатию, распаковка выполняется через потоковый API.
Основные функции:
inflateInit()/inflateInit2()— инициализация структуры потока для распаковки;inflate()— распаковка входных данных; может вызываться многократно;inflateEnd()— завершение распаковки и освобождение ресурсов;inflateReset()— сброс состояния потока;inflateGetDictionary()/inflateSetDictionary()— работа с предопределённым словарём.
Работа с файлами в формате gzip
Для удобной работы с gzip-файлами предоставляется обёртка, аналогичная функциям стандартной библиотеки.
Основные функции:
gzopen()— открытие gzip-файла для чтения или записи;gzread()— чтение распакованных данных из gzip-файла;gzwrite()— запись данных в gzip-файл со сжатием;gzprintf()— форматированный вывод в gzip-файл;gzputs()/gzgetc()— построчный ввод-вывод;gzclose()— закрытие gzip-файла;gzerror()— получение строки ошибки.
Контрольные суммы
Библиотека включает функции для вычисления контрольных сумм, используемых в форматах zlib и gzip.
Основные функции:
crc32()— вычисление CRC-32;adler32()— вычисление Adler-32 (более быстрая, но менее надёжная альтернатива CRC);crc32_combine()/adler32_combine()— объединение контрольных сумм нескольких блоков.
Управление памятью и вспомогательные функции
Для настройки аллокаторов и получения информации о библиотеке.
Основные функции:
zlibVersion()— возвращает строку с версией библиотеки;zError()— возвращает строку описания ошибки по коду;deflateGetDictionary()— получение текущего словаря;compress()/uncompress()— простые функции для однократного сжатия/распаковки блока данных;compress2()— сжатие с заданным уровнем;uncompress2()— распаковка с возвратом реального размера.