Linux/Windows下Zlib的安装与使用

Zlib是一个很好的压缩解压缩库,今天我们分别介绍如何在Linux与Windows上安装与使用:

一:Linux平台

首先看看自己的机器上是不是已经安装好zlib了:

whereis zlib

如果安装好了,会输出zlib的路径,这样直接跳过前2步。

1.

下载zlib的最新版,我的是1.2.3

2.

解压,编译:

./configure

make

sudo make install

3.

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.

运行结果如下所示:

Linux/Windows下Zlib的安装与使用

呵呵,只压缩掉了一个字节。

我们用到了两个函数: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。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/21849.html