2

我正在使用 zlib 编写一个在多个线程中压缩数据的程序。所以我不能使用gzwrite。我正在使用 compress2()。

*dest_len = compressBound(LOG_BUFF_SZ);
err = compress2((Bytef*)compressed_buff->buff, dest_len, (Bytef*)b->buff, size, GZ_INT_COMPRESSION_LEVEL);
write(fd, compressed_buff->buff, compressed_buff->full);

但是当我尝试通过 gzip -d 解压缩文件时,我看到下一个输出:“不是 gzip 格式”。我究竟做错了什么?谢谢您的回答

4

1 回答 1

4

compress()compress2()压缩为zlib 格式,而不是gzip 格式。您需要使用较低级别的函数才能选择 gzip 格式。那些deflateInit2()deflate()deflateEnd()。阅读zlib.h中的文档以了解这些功能。在那之后,您还应该查看大量记录使用它们的示例

于 2013-04-18T15:45:48.933 回答