http://blog.chinaunix.net/uid-14121858-id-216337.html

使用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,写一段简单的代码测试看看或直接看zlib包下面的example.c文件。

#include <stdio.h>
#include "zlib.h"// 编译方法: gcc *.c -lz -g -o test
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库已经安装在系统中了,而且是使用C语言写的测试代码的话,使用这个命令:gcc *.c -lz -g -o test

看看我这里运行的图:

转载于:https://www.cnblogs.com/tfanalysis/articles/4225486.html

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

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

    本文来自:http://www.shineblog.com/user1/13950/archives/2008/934622.shtml 出由个人好奇,研究一下86版输入法安装程序,引发了一系列的变化 ...

  2. zlib库使用简单讲解

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

  3. C++封装zlib库

    C++封装zlib库 1.zlib简介 2.如何下载zlib库源代码 3.如何安装zlib库 4.zlib代码封装步骤 4.1.编写初始化函数 4.2.编写压缩.解压函数 4.3.编写刷新数据函数 5 ...

  4. mysql zlib_[MySQL 学习] zlib库相关结构和函数-阿里云开发者社区

    以下主要是阅读zlib库时,对库函数的注释的翻译,也是为了帮助理解zlib在innodb压缩表中的应用 这里只考虑了Innodb用到的函数,其他的具体参考zlib.h文件,里面的注释写的非常详细 -- ...

  5. 数据流压缩之应用篇zlib库

    关于数据流压缩的原理,lz77以及huffman编码可以参考上一篇: https://blog.csdn.net/sesiria/article/details/116835301 本篇将包含以下内容 ...

  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. 2018-3-13 目标改动---智能算法
  2. Tekson的数据结构程序9——搜索
  3. java取消 验证_使用Spring Security Java配置时禁用基本身份验证
  4. springMVC 拦截器简单配置
  5. disruptor:CAS实现高效(伪)无锁阻塞队列实践
  6. Hadoop YARN(入门) —— Hadoop权威指南5
  7. 网页QQ客服聊天功能
  8. 2021人工智能原理与算法(国科大张文生老师主讲)
  9. storyboard(故事版)新手教程 图文详解 3.在故事版上使用scrollview
  10. Wireshark 解析PDCP-LTE
  11. 计算机控制篮球,【精品课程设计】计算机控制技术弱电课程之篮球比赛计时计分器doc.doc...
  12. 使用Logstash接收Netflow日志并发送到syslog服务器
  13. 100以内加减法C语言编程,C语言编程100题(其三)来啦!
  14. 【转】Photoshop保存格式介绍大全
  15. 敏捷迭代管理 --提测管理
  16. Pycharm控制台打开/关闭命令行模式
  17. 正则表达式 包含一些 但不包括 的命令
  18. 蓝牙连接每次弹出确认框问题的排查及解决
  19. UTC时间格式转时间戳
  20. 怎么把jpg转换成docx格式

热门文章

  1. android studio selector 插件,Android Studio 常用插件
  2. saber软件安装后怎么打开_教程:新《Beat Saber》mod安装工具已推出
  3. html按钮坐标,html-单选按钮位置CSS
  4. 哒螨灵使用注意事项_杀螨最优组合,老的、少的、没出生的,都管用
  5. mac mysql ip访问不了_解决mysql中只能通过localhost访问不能通过ip访问的问题
  6. 怎么在mac下运行映像dmg_仅用Mac OS X系统映像文件(dmg)安装系统
  7. 一文读懂 Shell 中各种括号的作用
  8. 阿里云微服务引擎 MSE 2022 年 3 月产品动态
  9. 都已经十岁的 Apache Dubbo,还能再乘风破浪吗?
  10. Go 开发关键技术指南 | 敢问路在何方?(内含超全知识大图)