繁体   English   中英

使用zlib库进行gzip解压缩

[英]gzip decompression using zlib library

我在解压缩某些gzip数据时遇到问题。 我有一个带有指向动态分配的char字符串的指针的数组。 该数组的每个元素都是我要解压缩的gzip文件的一部分。 我想到的第一件事是将这些字符串连接为一个,然后解压缩数据,但是由于要进行大量复制,因此我想避免使用此方法。

所以问题是:有没有办法使用zlib库解压缩分成几部分的数据? 我试图这样做,但是当我解压缩第一部分时,我得到Z_DATA_ERROR-这是正常的,因为数据不完整。 有什么方法可以“等待”其余数据解压缩吗?

是。 您可以简单地以适当的顺序对每个字符串依次调用inflate() 对于inflate()每次调用,您可以为压缩数据提供不同的指针和长度。 每次确保在移至下一个输入块之前,先消耗掉所有生成的未压缩数据,并且avail_in为零。

如果收到Z_DATA_ERROR ,则意味着您没有正确地重新组装原始流,或者原始流不是gzip流。

请注意,要解压缩gzip流,您需要使用inflateInit2()进行初始化,并适当地设置参数以请求gzip解压缩。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM