博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zlib与GZip - woaidongmao - C++博客
阅读量:6839 次
发布时间:2019-06-26

本文共 755 字,大约阅读时间需要 2 分钟。

   zlib是一个通用的压缩开源库,提供了在内存中压缩和解压的函数,包括对解压后数据的校验。目前版本的zlib只支持deflate方法,但是其它的方法将会被添加进来并且拥有同样的接口。
—— zlib manaul
    deflate算法在rfc1951中有详细的说明。
    zlib同时又是一种数据格式,使用zlib库压缩后的数据会在deflate数据的头和尾添加信息,形成zlib格式的数据。
   gzip也是一种数据压缩格式,可以大体分为头部,数据部和尾部三个部分,其中头部和尾部主要是一些文档属性和校验信息(rfc1952),数据部主要是用deflate方法压缩得到的数据。
   
    zlib库默认的压缩方法并不是gzip的,而是zlib的,因此使用zlib压缩得到gzip格式的数据有两种方法:
  1. 使用zlib提供的gz***系列函数可以直接把想要的内容写入一个磁盘gzip文件;
  2. 如果想在内存中生成gzip格式的数据,可以在初始化的时候调用inflateInit2函数,并指定为gzip格式,代码如下:
   

  z_stream d_stream;

  d_stream.zalloc = NULL;
  d_stream.zfree = NULL;
  d_stream.opaque = NULL;
  int ret = deflateInit2(&d_stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, DEFAULT_WINDOWSIZE, DEFAULT_MEMLEVEL,  Z_DEFAULT_STRATEGY);
  if (Z_OK != ret)
  {
    printf("init deflate error\n");
    return ret;
  }

    之后,用deflate压缩出来的数据就是gzip的了。

转载地址:http://hemkl.baihongyu.com/

你可能感兴趣的文章
Log4J日志配置详解
查看>>
Exchange日常管理之二十二:配置保留策略
查看>>
数据库原理 - 序列5 - 事务是如何实现的? - Undo Log解析
查看>>
【笔记】与Android酱的第一周
查看>>
最先进数据中心都建在哪?
查看>>
一个jsp内嵌一个jsp
查看>>
将用户添加至sudoers列表
查看>>
MySQL用户管理、常用sql语句、数据库备份
查看>>
Redis持久化实践及数据恢复
查看>>
分享一个java对xml,excel,jdbc.properties,读写文件,读写图片等实现(1)
查看>>
ApacheBench-web性能测试
查看>>
Python(四)字符串
查看>>
Git命令集十五——拉取命令
查看>>
【大数据】分布式计算
查看>>
Linux文件查找
查看>>
mysql-atlas安装及使用教程
查看>>
IP地址的划分和配置路由
查看>>
.ini文件的读写操作
查看>>
Google Guava 概要
查看>>
卖火柴的小女孩
查看>>