Zlib库及压缩算法

Zlib简介

zlib是用于数据压缩的一个简单的库,仅支持一个LZ77的变种算法。
zlib被设计成一个免费的、通用的、法律上不受阻碍(即没有被任何专利覆盖) 的无损数据压缩库。zlib几乎适用于任何计算器硬件和操作系统。
下载地址

zlib安装

进入zlib\contrib\vstudio\vc14
打开sln文件,使用x64 debug模式进行编译
编译过程可能会踩的坑

zlib调用

vs工程中选择

  • 项目属性\C/C++\ 预处理处加入ZLIB_WINAPI
  • 项目属性\C/C++\ 附加包含目录 增加.h文件所在目录
  • 项目属性\链接器\常规\附加库目录 选择编译后的.lib文件所在目录
  • 项目属性\链接器\输入\附加依赖项 输入zlibwapi.lib
  • zlibwapi.dll 拷贝至src目录下

调用C++库常用步骤

  • 附加库目录选择lib所在目录
  • 附加依赖项选择lib文件
  • 将.dll文件加入根目录
  • 使用预编译指令与.h文件调用

zlib常用函数

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

压缩算法意义

经测试,在二进制文件中随机写入ASCII码时[0-127],使用Zlib压缩算法能将数据压缩为0.87倍大小,而使用7z算法能将数据压缩为0.58倍大小
理论上完全随机的数据无法被压缩,可能是使用rand()%128降低了数据的随机性
压缩后的数据在传输时可能出错,导致无法恢复
后续将改用7z算法,并在传输时测试出错率,若出错率较高则不使用压缩

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容