设置zlib以生成gzip压缩数据

aka*_*asi 4 gzip zlib

我有一个关于使用zlib库来压缩数据的问题.我想设置zlib(即deflateInit函数),使压缩数据的二进制等于命令生成的数据:gzip -9.这可能吗?先感谢您

小智 6

windowsBits参数的默认值是15.
向它添加16将是31.
15 | 16返回31.

z_stream strm;
unsigned char* in = DATA TO COMPRESS;

strm.zalloc = Z_NULL;
strm.zfree = Z_NULL;
strm.opaque = Z_NULL;
strm.next_in = in;

int windowsBits = 15;
int GZIP_ENCODING = 16;

deflateInit2 (&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED,
              windowsBits | GZIP_ENCODING,
              8,
              Z_DEFAULT_STRATEGY));
Run Code Online (Sandbox Code Playgroud)

http://www.lemoda.net/c/zlib-open-write/index.html


Mar*_*ler 3

您无法获得与 gzip 完全相同的输出。但是,您可以获得与 gzip 兼容的输出,以便 gzip 能够解压缩它。你需要使用deflateInit2().