本文来自:http://www.shineblog.com/user1/13950/archives/2008/934622.shtml

出由个人好奇,研究一下86版输入法安装程序,引发了一系列的变化.首先是其安装程序中的 LZOpenFile函数,函数的作用已经了解过了,只是没有实验对象,所以还得找个,压缩好的包来测试一下,最后先找到zlib.来试试看.顺便还能学 一些其中的东西.以下内容均是转自他处.

什么是zlib? 官网上有如下说明,自己看吧

zlib is designed to be a free, general-purpose, legally unencumbered -- that is, not covered by any patents -- lossless data-compression library for use on virtually any computer hardware and operating system. The zlib data format is itself portable across platforms.

那么如何使用它来进行数据压缩呢?

首先,去http://www.zlib.net/ 下载最新的Release版本,压缩完解压缩到一个文件目录

如果你在Linux下工作,那么编译前,请先看看目录下面的MakeFile文件,用文本打开(命令行下less),可以看到里面一些句子:

# To compile and test, type:
#    ./configure; make test
# The call of configure is optional if you don't have special requirements
# If you wish to build zlib as a shared library, use: ./configure -s

# To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type:
       #    make install
       # To install in $HOME instead of /usr/local, use:
       #    make install prefix=$HOME

很简单,要编译安装linux下的静态库(.a)文件,那么在命令行下输入 ./configure;make;make install;就可以了,而如果要编译安装共享库(.so,类似windows下面的.dll),那么在命令行下输入 ./configure -s;make;make install;如果出现的都是Yes,那么就成功了。

在windows下编译将更简单,打开目录下projects/visualc6下的zlib.dsw,用VC6打开,然后在Build菜单下,选择Configurations,然后选择你要生成的类型就好了。vs2003/vs2005,下类似。

使用zlib,写一段简单的代码测试看看

#i nclude <stdio.h>
#i nclude "zlib.h"

int main()
{
     //原始数据
     const unsigned char strSrc[]="hello world!/n/
aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试/
aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试/
aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试/
aaaaa bbbbb ccccc ddddd aaaaa bbbbb ccccc ddddd中文测试 中文测试";

unsigned char buf[1024]={0},strDst[1024]={0};
     unsigned long srcLen=sizeof (strSrc),bufLen=sizeof (buf),dstLen=sizeof (strDst);

printf("Src string:%s/nLength:%d/n",strSrc,srcLen);
     //压缩
      compress(buf,&bufLen,strSrc,srcLen);
      printf("/nAfter Compressed Length:%d/n",bufLen);
      printf("Compressed String:%s/n",buf);
     //解压缩
      uncompress(strDst,&dstLen,buf,bufLen);
      printf("/nAfter UnCompressed Length:%d/n",dstLen);
      printf("UnCompressed String:%s/n",strDst);
     return 0;
}

编译这段代码时要注意,假设你在windows下并使用静态库(.lib)连接,那么在 vc6下,需要把zlib.lib文件放到你的代码目录下,并把zlib.h、zconf.h加入到workspace中,并且设置项目属 性:project-settings-link-category选择input,然后在library modules中的最后面输入一个空格和zlib.lib,并在lgnore libraries输入MSVCRT,原因是这个默认库和zlib会有冲突 !设置好以后直接编译运行就行了

如果你在linux下面,那么把zlib.h、zconf.h、libz.a、test.cpp都放在同一个目录,然后在命令行输入以下命令,然后运行./test看看吧

g++ *.cpp libz.a -g -o test

使用zlib库进行数据压缩、解压缩相关推荐

  1. 使用zlib库进行数据压缩

    http://blog.chinaunix.net/uid-14121858-id-216337.html 使用zlib库进行数据压缩 什么是zlib? 官网上有如下说明,自己看吧 zlib is d ...

  2. 心得 ~ 使用 zlib库 解压缩 zip文件

    最近在完成一个项目,需要用到C++语言读取一个zip文件内指定文件的内容.在网上查阅了不少资料,针对过程中遇到的问题,自己也研究了一下,现将方法心得记录下来. 关于解压文件的方法,根据网上的资料,大概 ...

  3. QT4.8.6调用zlib库实现数据流的压缩与解压缩

    转载sunnysab :https://blog.csdn.net/sunnysab/article/details/46672949 ZLIB库 ZLIB版本zlib 1.2.11  地址:http ...

  4. python中zlib库用法详解(压缩与解压缩)

    zlib主要用于压缩与解压缩 字符串:使用zlib.compress可以压缩字符串.使用zlib.decompress可以解压字符串. 数据流:压缩:compressobj,解压:decompress ...

  5. zlib库使用简单讲解

    1.zlib库简介 zlib 是通用的压缩库,提供了一套 in-memory 压缩和解压函数,并能检测解压出来的数据的完整性(integrity).zlib 也支持读写 gzip (.gz) 格式的文 ...

  6. zlib库 安装与使用

    1. zlib简介 zlib 适用于数据压缩的函式库,由Jean-loup Gailly (负责compression)和 Mark Adler (负责decompression)开发. zlib被设 ...

  7. 【ubuntu】zlib 库下载编译安装

    目录 1.zlib 库下载 2.编译安装 1.zlib 库下载 一个庞大而精致的压缩库(也是免费的,更不用说不受专利限制) (与Linux zlibc压缩文件I/O库无关) zlib被设计为一个免费的 ...

  8. 理解和使用zlib库 - 我个人的救赎

    理解和使用zlib库 作者: 阙荣文 日期: 2016.6.2 0. 很多年以前我曾经写过一篇文章(http://blog.csdn.net/querw/article/details/1452041 ...

  9. zlib库介绍三:gzip(.gz格式)文件读写

    gzip格式文件是一个数据压缩文件,文件大体上分为头部.数据部和尾部. 头部和尾部主要是一些文档属性和校验信息(rfc1952),数据部主要是用deflate方法压缩得到的数据. zlib开源库使用的 ...

最新文章

  1. GitHub上最励志的计算机自学教程
  2. Jmeter-jtl性能测试报告转换-2种导出方法
  3. c调用其他类的方法_Java 的 Native 方法——今天又进步了
  4. snmp 获取mac add table_R语言学习笔记(1)数据获取与数据重塑的第一部分
  5. 一个使用Java BlockingQueue实现的生产者和消费者
  6. 我的2018知乎大数据分析
  7. [渝粤教育] 中国地质大学 马克思主义基本原理 复习题
  8. restTemplate重定向问题 cookie问题
  9. sqlserver中系统库的作用
  10. 黑客挂马木马病毒研究 黑客木马的攻击与防止 木马的威力 木马运作流程 黑客的高明 社工学用户行为分析...
  11. [笔记]ASCLL码表(48 “0”,65 “A”,97 “a”)2022.3.12
  12. ubuntu 测试硬盘读写速度
  13. Python自动化办公之操作Excel文件
  14. im即时通讯开发:群聊消息的已读未读功能
  15. 一套优雅的开源后台管理系统:若依后台管理系统 3.3 发布,新增多项功能
  16. Tiktok 网络、网络
  17. 正交频分复用中的正交问题
  18. 程序员领养群破解笔记
  19. 检测指定进程是否存在是否运行
  20. 百度API海王撩妹话术生成器模板

热门文章

  1. 谢国忠:不得不告诉你一个坏消息
  2. 温故知新(九一)什么是抽象语法树,有哪些用途
  3. 内存分配器 (Memory Allocator)
  4. matlab 星座图 qam,16QAM_星形及矩形星座图调制解调MATLAB代码.doc
  5. php 403 -禁止访问 访问被拒绝,HTTP 错误 403.6 - Forbidden 访问IP地址被拒绝
  6. js中数组的冒泡排序(升序,降序),逆序输出。
  7. 永中科技破产清算的疑问(三)
  8. 20190925-ORA-00600错误及被注入的软件
  9. Angular4 - 路由
  10. 我是如何学习Java的~标志寄存器及其应用