问题描述
我正在使用 zlib 编写一个在多个线程中压缩数据的程序.所以我不能使用 gzwrite.我正在使用 compress2().
I'm using zlib to write a program that compress data in several threads. so I can't use gzwrite. I'm using 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 格式".我究竟做错了什么?谢谢你的回答
But when I try to decompress file via gzip -d I see the next output: "not in gzip format". what am I doing wrong? Thank you for your answers
推荐答案
compress()
和 compress2()
压缩到 zlib 格式,而不是 gzip 格式.您需要使用较低级别的功能才能选择 gzip 格式.它们是 deflateInit2()
、deflate()
和 deflateEnd()
.有关这些函数,请阅读 zlib.h 中的文档.之后,您还应该查看详细记录的使用示例.
compress()
and compress2()
compress to the zlib format, not the gzip format. You need to use the lower-level functions to be able to select the gzip format. Those are deflateInit2()
, deflate()
and deflateEnd()
. Read the documentation in zlib.h for those functions. After that, you should also look at the heavily documented example of their use.
这篇关于如何通过zlib和compress2在C中编写gz文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!