如何通过zlib和compress2在C中编写gz文件

如何通过zlib和compress2在C中编写gz文件

本文介绍了如何通过zlib和compress2在C中编写gz文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 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文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 19:23