你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux/Windows下Zlib的安装与使用

[日期:2012-06-04] 来源:Linux社区  作者:Linux [字体: ]

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

一:Linux平台

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

whereis zlib

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

1.

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

2.

解压,编译:

./configure

make

sudo make install

3.

zlib安装好了,下面我们写一个程序测试一下:

Makefile:

  1. all: test.c  
  2.     gcc -Wall -o test test.c -lz  
  3.   
  4. clean:  
  5.     rm -rf *.o test  

注意到,我们用-lz加入了zlib库

test.c

  1. #include <stdio.h>   
  2. #include <zlib.h>   
  3.   
  4. int main()  
  5. {  
  6.   /* 原始数据 */  
  7.   unsigned char strSrc[] = "hello world! aaaaa bbbbb ccccc ddddd 中文测试 yes";  
  8.   unsigned char buf[1024] = {0};  
  9.   unsigned char strDst[1024] = {0};  
  10.   unsigned long srcLen = sizeof(strSrc);  
  11.   unsigned long bufLen = sizeof(buf);  
  12.   unsigned long dstLen = sizeof(strDst);  
  13.   
  14.   printf("Src string:%s\nLength:%ld\n", strSrc, srcLen);  
  15.     
  16.   /* 压缩 */  
  17.   compress(buf, &bufLen, strSrc, srcLen);  
  18.   printf("After Compressed Length:%ld\n", bufLen);  
  19.   
  20.   /* 解压缩 */  
  21.   uncompress(strDst, &dstLen, buf, bufLen);  
  22.   printf("After UnCompressed Length:%ld\n",dstLen);  
  23.   
  24.   printf("UnCompressed String:%s\n",strDst);  
  25.     
  26.   return 0;  
  27. }  

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
相关资讯       Zlib安装 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款