官网:http://www.zlib.net/
功能:压缩一段字节流,但是不包含任何文件信息。所以如果要编写压缩数据,还要自定义头部信息之类的,自己生成对应的文件结构
设计:CMake编译工具(用于在windows中进行官网上的包进行工程生成,英语好的可以通过example来进行学习)。
关键字:compress,uncompress, inflate,deflate。
  • 简单解压缩:(前提,dest和source都是已分配足够内存的内存地址),OF()是自定义的宏,去掉就好。
压缩数据块
int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
                                 const Bytef *source, uLong sourceLen));
解压数据块
 int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
                                   const Bytef *source, uLong sourceLen));
  • 分块解压缩:分块传递数据,然后对数据进行解压缩,感觉没什么用,可以根据上述两个函数模拟。
关键结构:
typedef struct z_stream_s {
    z_const Bytef *next_in;     /* next input byte */
    uInt     avail_in;  /* number of bytes available at next_in */
    uLong    total_in;  /* total number of input bytes read so far */
    Bytef    *next_out; /* next output byte will go here */
    uInt     avail_out; /* remaining free space at next_out */
    uLong    total_out; /* total number of bytes output so far */
    z_const char *msg;  /* last error message, NULL if no error */
    struct internal_state FAR *state; /* not visible by applications */
    alloc_func zalloc;  /* used to allocate the internal state */
    free_func  zfree;   /* used to free the internal state */
    voidpf     opaque;  /* private data object passed to zalloc and zfree */
    int     data_type;  /* best guess about the data type: binary or text
                           for deflate, or the decoding state for inflate */
    uLong   adler;      /* Adler-32 or CRC-32 value of the uncompressed data */
    uLong   reserved;   /* reserved for future use */
} z_stream;
     typedef z_stream FAR *z_streamp;
该结构作为参数执行接下来的函数,传递解压缩的必要信息,比如:目标地址,数量,原始地址数量,写入数量,回调函数(目前不知道这个回调函数是干嘛的)。
err = deflateInit(&c_stream, Z_BEST_SPEED);          《==》    err = inflateInit(&d_stream);
err = deflate(&c_stream, Z_NO_FLUSH);                《==》    err = inflate(&d_stream, Z_NO_FLUSH);
err = deflateEnd(&c_stream);                         《==》    err = inflateEnd(&d_stream);
  • 压缩数据也是支持直接读写的。用处的话感觉就是你可以写一个字符马上被压缩,读出来的字节也经过了解压。最后形成的是一个压缩文件。
相关结构gzFile, z_off_t;
相关函数:gzopen(),  gzputc,  gzputs,  gzprintf,  gzseek,  gzcolose,  gzread, gzungetc, gzgetc, gzgets。使用方法跟C语言中带的文件读写差不多。

ZLib 解压缩工具相关推荐

  1. java 解压缩 工具类_Java实现的zip压缩及解压缩工具类示例

    本文实例讲述了Java实现的zip压缩及解压缩工具类.分享给大家供大家参考,具体如下: import java.io.BufferedInputStream; import java.io.Buffe ...

  2. 最优秀好用的免费文件压缩/解压缩工具软件 (可替代WinRAR与7-Zip)——Bandizip

    一款可以完美替代WinRAR与7-Zip的文件解压缩工具,用腻了上述两款软件的童鞋可下载尝试. 已更新至最新7.15.0版本,下载链接见文末. 软件主界面: 各种支持的格式: 7Z, AES, ALZ ...

  3. Linux下的压缩解压缩工具(转载)

    一.Linux压缩工具概述 在Linux系统中,提供了许多压缩工具,虽然方便,但也难免造成一些混乱.笔者通过一段时间的整理,将它们理一理顺,希望能够对大家有所帮助: 首先,我们看一下下面这张" ...

  4. Beyond Compare 4 智能比较工具、Everything 文件/夹搜索工具,WinRAR,7-Zip 解压缩工具、diagrams 流程图工具、Markdown 编辑器-Notable

    目录 Beyond Compare 概述与下载 Beyond Compare 友好使用 jd-gui 反编译 Java 源码工具 Everything 文件/夹搜索工具 WinRAR.7-Zip 解压 ...

  5. linux系统压缩与解压缩工具使用方法

    linux系统压缩与解压缩工具包括7z.zip/unzip.rar/unrar 一.7z 安装: 执行以下命令下载安装: wget https://udomain.dl.sourceforge.net ...

  6. mac 下几款解压缩工具

    对于我们这种资料特别多,随时都需要跟工作伙伴沟通传递资料的人来说,一款方便的压缩软件真的太重要了,不仅可以节省时间,节省内存,更重要的是提高工作效率,今天废鱼就给大家推荐几款常用压缩软件. The U ...

  7. Mac端解压缩工具推荐,哪款更实用?

    提到解压缩工具,很多人首先想到的是WinRAR.快压等软件,这几款可以说Windows系统上常见的解压缩神器了.但是对于Mac系统来说,我们会发现很多软件的局限性非常大,具有实用性的解压缩工具较少. ...

  8. 适用于linux的解压工具,Linux下的压缩/解压缩工具

    Linux下的压缩/解压缩工具 发布时间:2006-11-12 00:54:48来源:红联作者:philosophy 一.Linux压缩工具概述 在Linux系统中,提供了许多压缩工具,虽然方便,但也 ...

  9. java压缩工具_java解压缩工具下载

    java超级无损解压缩工具(java解压文件)可对文件进行快速压缩的同时还能保证文件的压缩质量,其压缩后的格式只支持jar,有java超级无损压缩和java超级无损解压功能. 软件特点: 1.本工具是 ...

最新文章

  1. SLAM|C语言实现对文件的读写
  2. 动态sql拼接单引号与 变量赋值
  3. 请求处理传入原生的API || 请求处理CharacterEncodingFilter解决乱码问题
  4. java nio connect_Java NIO系列教程(八) SocketChannel
  5. 风靡全球的人工智能,如何赶上这班车?
  6. 标记已读如何实现Java_javamail标记gmail消息为已读
  7. 零基础快速开发全栈后台管理系统(Vue3+ElementPlus+Koa2)—项目概述篇(一)
  8. 如何在linux中也能够使用自动类型推导关键字auto?
  9. Windows Embedded Compact 7中的进程和线程(上)
  10. Luogu3390 【模板】矩阵快速幂
  11. 华尔街日报:雅虎站在移动互联网时代悬崖边
  12. autojs和按键精灵哪个好?按键精灵打包开始收费了,是弃坑还是继续杠?
  13. 毕业论文引言 文献综述 摘要有什么区别?
  14. 物联网-家庭监控系统
  15. wep破解——模拟chopchop攻击
  16. Oracle 数据库的PLSQL块,游标、函数,存储过程与触发器的使用方法与案例
  17. 芝诺数解|「十三」一菜一格,百菜百味——重庆川菜数据分析报告
  18. linux 文件系统损坏修复方式
  19. ROSGazebo自定义多旋翼无人机仿真——环境搭建和模型建立
  20. 在Chrome 浏览器上滚动截屏

热门文章

  1. 原生ajax crossO,总鳍鱼Crossopterygian
  2. C语言求ex的近似值
  3. 【财务数字化管理】金蝶ERP系统助力企业数字化转型
  4. “哪吒”大闹暑期档,国漫未来可期
  5. Mac连接网线能够接收微信消息,浏览器不能访问网页
  6. 03 一个计算器,switch语句
  7. 用命令卸载Win8 IE9/IE10/IE11浏览器
  8. c语言去掉文件中重复单词,可以读出文件中出现所有单词的出现次数并显示求只显示出现最多5...
  9. office 脚本与wpsJS宏代码的差别初体验
  10. 笔记本电脑win10系统,麦克风突然没声音了