Вы могли бы просто использовать zlib вместо того, чтобы кататься самостоятельно?
Для поддержки предварительно сжатых преамбул вы можете:
Используйте необработанный API (использующий z_streamp
в качестве параметра) вместо оболочек более высокого уровня.
Инициализируйте сжатую преамбулу своей собственной z_streamp
и поместите вывод в буфер.
Затем для всех последующих использований преамбулы скопируйте выходной буфер преамбулы на выход и скопируйте z_streamp
преамбулы и используйте эту копию для сжатия последующих байтов.