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算法,并在传输时测试出错率,若出错率较高则不使用压缩

你可能感兴趣的:(Zlib库及压缩算法)