linux下,gzip的解压与压缩

部分http响应报文采取gzip格式压缩,需要解压后数据才有效。

http://www.zlib.net/

提供了解压gzip的库函数

例子非常详细,http://www.zlib.net/zlib_how.html

系统版本:Ubuntu 14.04

安装库:apg-get install zlib1g-dev

编译时制定:gcc XXX -lz

添加头文件:#include <zlib.h>

特别需要注意:

    example中的

ret = inflateInit(&strm);

    是默认解压zlib,若用它直接解压gzip的报文将返回Z_DATA_ERROR错误,需要将函数替换为:

 ret = inflateInit2(&strm, 47);


另外:由inflateInit 似乎不支持分段解压。通过测试发现,虽然例子中,是按字符串读取的压缩数据,后再解压,看似可以分段解压,但如果就每子字符串单独传入函数解压就会报错。应该是待解压的文件开头会有一些初始化的信息在解压开始赋予了相应的函数,如果从数据中间开始解压就缺少开头的信息,所以报错。

gzip压缩文件以十六进制 1F8B 字符开始作为标志

由于此处全是针对解压操作,具体压缩函数未讨论。

你可能感兴趣的:(linux下,gzip的解压与压缩)