Zlib是一个很好的压缩解压缩库,今天我们分别介绍如何在Linux与Windows上安装与使用:一:Linux平台首先看看自己的机器上是不是已经安装好zlib了:whereis zlib如果安装好了,会输出zlib的路径,这样直接跳过前2步。1.下载zlib的最新版,我的是1.2.32.解压,编译:./configuremakesudo make install3.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
Length:%ld
", strSrc, srcLen);
-
- /* 压缩 */
- compress(buf, &bufLen, strSrc, srcLen);
- printf("After Compressed Length:%ld
", bufLen);
-
- /* 解压缩 */
- uncompress(strDst, &dstLen, buf, bufLen);
- printf("After UnCompressed Length:%ld
",dstLen);
-
- printf("UnCompressed String:%s
",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。
Ubuntu下搭建Ruby On Railsgrub error: unknown filesystem的解决办法相关资讯 Zlib安装
- Ubuntu下安装Zlib(附Zlib1.2.3本地 (09/15/2008 21:05:22)
本文评论 查看全部评论 (0)