首页 > 其他分享 >zlib使用笔记

zlib使用笔记

时间:2022-12-08 17:36:48浏览次数:46  
标签:解压 uLong 压缩 zlib 笔记 使用 Bytef inflate




zlib使用过程


compress 压缩过程:deflateInit() ->deflate() ->deflateEnd();  uncompress 对应的解压过程 inflateInit() ->  inflate() ->  inflateEnd(); 
compress2 压缩过程:deflateInit2() ->deflate() ->deflateEnd();  对应的解压过程 inflateInit2() ->  inflate() ->  inflateEnd(); 






zlib


关键的函数


(1)int compress (Bytef *dest,   uLongf *destLen, const Bytef *source, uLong sourceLen);


把源缓冲压缩成目的缓冲




(2) int compress2 (Bytef *dest,   uLongf *destLen,const Bytef *source, uLong sourceLen,int level);


功能和上一个函数一样,都一个参数可以指定压缩质量和压缩数度之间的关系(0-9)不敢肯定这个参数的话不用太在意它,明白一个道理就好了: 要想得到高的压缩比就要多花时间


(3) uLong compressBound (uLong sourceLen);


计算需要的缓冲区长度. 假设你在压缩之前就想知道你的产度为 sourcelen 的数据压缩后有多大, 可调用这个函数计算一下,这个函数并不能得到精确的结果,但是它可以保证实际输出长度肯定小于它计算出来的长度


(4) int uncompress (Bytef *dest,   uLongf *destLen,const Bytef *source, uLong sourceLen);


解压缩(看名字就知道了:)




   9、文件概览
    alder32.c:计算数据流的Alder-32校验和,实现alder32()。
    crc32.h和crc32.c:计算数据流的CRC-32,实现crc32()。
    deflate.h和deflate.c:使用默认算法压缩数据,实现deflate函数簇。
    inflate.h和inflate.c:zlib的解压,实现inflate函数簇。
    compress.c:实现内存缓冲区的压缩,包括compress(), compress2(), compressBound()。
    uncompr.c:实现内存缓冲区的解压,包括uncompress()。
    gzguts.h和gzlib.c:读写gzip文件的通用实现,包括gzopen(), gzdopen(), gzbuffer(), gzrewind(), gzseek(), gztell(), gzoffset(), gzeof(), gzerror(), gzclearerr()。
    gzclose.c:实现gzclose()。
    gzread.c:读取gzip文件的实现,包括gzread(), gzgetc(), gzungetc(), gzgets(), gzdirect(), gzclose_r()。
    gzwrite.c:写gzip文件的实现,包括gzwrite(), gzputc(), gzputs(), gzprintf(), gzflush(), gzsetparams(), gzclose_w()。
    infback.c:使用回调接口实现解压,包括inflateBackInit(), inflateBack(), inflateBackEnd()。
    zutil.h和zutil.c:zlib库用到的工具函数。包括zlibVersion(), zlibCompileFlags(), zError()。
    zlib.h:zlib库导出的接口描述文件,应用程序使用zlib库时需要本文件。
    zconf.h:zlib库的编译配置文件,如果编译时需要给所有库函数加上唯一的前缀,或者需要针对不同平台作特殊编译,需要用到本文件。还包括标准 C/C++兼容性定义;编译成DLL时是否使用WINAPI/WINAPIV调用方式;类型定义Byte,uInt, uLong, voidpf等。
    inftrees.h和inftrees.c:为有效的解码生成Huffman树。    
    trees.h和trees.c:使用Huffman编码输出压缩的数据。
    inffixed.h:使用固定编码压缩。
    inffast.h和inffast.c:快速解压数据。

标签:解压,uLong,压缩,zlib,笔记,使用,Bytef,inflate
From: https://blog.51cto.com/u_6958388/5922949

相关文章

  • Python全栈工程师之从网页搭建入门到Flask全栈项目实战(5) - Flask中的ORM使用
    1.理解ORMORM是MTV模型里面的Model模型ORM(ObjectRelationalMapping),对象关系映射举例:学生选课学生和课程这两个实体,一个学生可以选择多门课程,一个课程可以被多名......
  • 自动化测试高手课-学习笔记
    课程链接github链接Job框架1自动化测试我对自动化测试架构师的定义是,不仅仅是写代码让自动化测试跑起来,而且能够超脱于工具框架的层面,对测试需求和自动化ROI一起抽......
  • 课堂笔记
     ---------------zip打包--------------'''zip函数,通过list1和list2一一对应,如果有多出的值,则忽略(自动过滤掉)举例如下:'''list1=['user','passwd','check']list2=......
  • S/MIME 101:使用 S/MIME 轻松实现 GDPR 合规
    自GDPR生效以来,加密包含敏感个人数据的电子邮件已被广泛认为是企业运营的最佳实践。这应该不足为奇——欧洲的电子邮件与美国的电子邮件具有相同的漏洞,未加密的电子邮件......
  • 举例: 在C语言 使用结构体和联合体,设计应用全局变量
    /*举例:在C语言使用结构体和联合体,设计应用全局变量*/#include"stm32f1xx_hal.h"typedefstruct/*定义GSP结构体*/{uint8_tgps_year_time;/*,单位年,......
  • STM32CubeIDE COMP与DAC配合使用
    1、配置DAC  2、配置COMP,COMP1_INP设置成SwtichwithDAC_OUT1使两者内部相连,即外部输入引脚COMP1_INM会与DAC_OUT1引脚的电平比较,大于或者小于设定DAC电压阈值会触......
  • libmongoc库和libbson库的使用
    libmongoc库和libbson库的使用学习一项知识,最好的方式是查看官方说明书。测试环境:操作系统:Windows10x64MongoDB版本:mongodb-5.0.14MongoDBClientLibrary版本:lib......
  • chmod -R 777使用.
    chmod修改文件和文件夹读写执行属性1。把hh.c文件修改为可写可读可执行chmod777hh.c要修改某目录下所有的文件属性为可写可读可执行chmod777*.*把文件夹名称与后缀名......
  • java笔记_8_动态调用方法
    //1.根据名称获取类ClassxxxClass=Class.forName("类名");//2.根据名称获取方法//2.1.不带参数MethodxxxMethod=xxxClass.getMethod("方法......
  • Python中12个常用模块的使用教程
    1.time模块importtime*一*#时间戳--》结构化时间--》格式化的字符串时间-----------------------------------------------------------------------------res1=tim......