zoukankan      html  css  js  c++  java
  • zlib and gzip

     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的了。
     

    baizhenxuan
    2009-08-24

  • 相关阅读:
    Pimlico:个人信息治理套件
    GChemPaint-绘制化学分子布局
    gLabels:名片方案软件
    设置Tomcat在Linux利用体系中自启动办法
    Linux应用系统下Xmanager器材登录设置
    KGmailNotifier-Gmail 邮件关照轨范
    Xfce 4.4.1 发布
    Mozilla Thunderbird 2.0.0.0 正式版颁布
    Gaim 已更名为 Pidgin
    Wine 0.9.35
  • 原文地址:https://www.cnblogs.com/baizx/p/1703965.html
Copyright © 2011-2022 走看看