Linux环境上zlib1.2.8安装及配置
来源:互联网 发布:考单片机的高级证书 编辑:程序博客网 时间:2024/06/07 03:32
zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。此函式库为自由软件,使用zlib授权。截至2007年3月,zlib是包含在Coverity的美国国土安全部赞助者选择继续审查的开源项目。
数据头(header)
算法
使用资源
策略
错误处理
数据长度
经过上述步骤,就完成了zlib安装!
程序测试
zlib安装好了,下面我们写一个程序测试一下:
Makefile:
- all: test.c
- gcc -Wall -o test test.c -lz
- clean:
- rm -rf *.o test
注意到,我们用-lz加入了zlib库
test.c
- #include <stdio.h>
- #include <zlib.h>
- int main()
- {
- /* 原始数据 */
- unsigned char strSrc[] = "hello world! aaaaa bbbbb ccccc ddddd 中文测试 yes";
- unsigned char buf[1024] = {0};
- unsigned char strDst[1024] = {0};
- unsigned long srcLen = sizeof(strSrc);
- unsigned long bufLen = sizeof(buf);
- unsigned long dstLen = sizeof(strDst);
- printf("Src string:%s\nLength:%ld\n", strSrc, srcLen);
- /* 压缩 */
- compress(buf, &bufLen, strSrc, srcLen);
- printf("After Compressed Length:%ld\n", bufLen);
- /* 解压缩 */
- uncompress(strDst, &dstLen, buf, bufLen);
- printf("After UnCompressed Length:%ld\n",dstLen);
- printf("UnCompressed String:%s\n",strDst);
- return 0;
- }
4.
运行结果如下所示:
呵呵,只压缩掉了一个字节。
我们用到了两个函数:compress和uncompress:
压缩:
int compress(unsigned char * dest, unsigned long * destLen, unsigned char * source, unsigned long sourceLen);
dest:压缩后数据保存的目标缓冲区
destLen:目标缓冲区的大小(必须在调用前设置,并且它是一个指针)
source:要压缩的数据
sourceLen:要压缩的数据长度
compress()函数成功返回Z_OK,如果内存不够,返回Z_MEM_ERROR,如果目标缓冲区太小,返回Z_BUF_ERROR
解压缩:
int uncompress(unsigned char * dest, unsigned long * destLen, unsigned char * source, unsigned long sourceLen);
dest:解压后数据保存的目标缓冲区
destLen:目标缓冲区的大小(必须在调用前设置,并且它是一个指针)
source:要解压的数据
sourceLen:要解压的数据长度
uncompress()函数成功返回Z_OK,如果内存不够,返回Z_MEM_ERROR,如果目标缓冲区太小,返回Z_BUF_ERROR,如果要解压的数据损坏或不完整,返回Z_DATA_ERROR。
- Linux环境上zlib1.2.8安装及配置
- Linux环境上zlib1.2.8安装及配置
- linux上安装mysql,配置环境
- 在linux上安装JDK,配置环境
- 在Linux上安装Gearman及配置使用Gearman的PHP扩展环境
- linux 下dmalloc安装及环境配置
- linux环境jdk安装及配置
- linux环境jdk安装及配置
- linux环境jdk安装及配置
- linux环境jdk安装及配置
- Linux安装JDK及环境配置
- linux环境jdk安装及配置
- Linux桌面版安装及开发环境配置
- linux环境jdk安装及配置
- go linux下安装及环境配置
- Weblogic安装及配置(linux环境)
- Linux环境下安装及配置Nginx
- Linux下安装Go及环境配置
- vtk+vs2013+qt5
- ZigBee 3.0 《Base-Device-Behavior-Specification》--Network formation
- uitableviewcell编辑模式自定义左边的图片按钮
- C++ Primer Plus,Chapter11, excercise11.1
- 从零开始 React Native (2) ES6面向对象编程
- Linux环境上zlib1.2.8安装及配置
- tips
- 我为什么要开始写博客
- 建议proto文件按包名分子目录
- Android新特性之筛选菜单
- 一个JDK版本问题引发的思考--Java环境配置 && Eclipse的JDK配置
- APP安全报告第一期:难以置信,手机银行APP的安全性居然低到22分!
- 机器学习十大算法的核心思想、工作原理、适用 情况及优缺点
- Galactic History URAL