qt 调用zlib压缩与解压缩功能
Zlib是一种免费且通用的压缩库,由于Zlib压缩效果比LZW好,而且解压缩速度快,更重要的是商业软件中使用Zlib不需要缴纳版权费,所以很多游戏都使用Zlib压缩资源文件。
Zlib是由Jean-loup Gailly 和 Mark Adler共同编写完成的压缩库,Zlib是开源的,而且从Zlib的官方网站http://www.zlib.net/上可以下载到不同平台和编译器下的源代码实现。
Zlib联合使用LZ77算法和Huffman哈夫曼树来实现数据压缩和数据解压。
zlib源码http://download.csdn.net/detail/huangyuancao/7760901
void MainWindow::on_pushButton_clicked()
{
FILE* File_src;
FILE* File_compress;
FILE* File_uncompress;
unsigned long len_src;
unsigned long len_compress;
unsigned long len_uncompress = MaxBufferSize;
unsigned char *buffer_src = new unsigned char[MaxBufferSize];
unsigned char *buffer_compress = new unsigned char[MaxBufferSize];
unsigned char *buffer_uncompress = new unsigned char[MaxBufferSize];
File_src = fopen("src.txt","r");
File_compress = fopen("compress.txt","w");
File_uncompress = fopen("uncompress.txt","w");
//compress
len_src = fread(buffer_src,sizeof(char),MaxBufferSize-,File_src);
compress(buffer_compress,&len_compress,buffer_src,len_src);
fwrite(buffer_compress,sizeof(char),len_compress,File_compress);
qDebug() << "normal zlib:" ;
qDebug() << "src:\n" << buffer_src << ",length:" << len_src ;
qDebug() << "compress:\n" << buffer_compress << ",length:" << len_compress ;
//uncompress
uncompress(buffer_uncompress,&len_uncompress,buffer_compress,len_compress);
fwrite(buffer_uncompress,sizeof(char),len_uncompress,File_uncompress);
qDebug() << "uncompress:\n" << buffer_uncompress << ",length:" << len_uncompress;
fclose(File_src);
fclose(File_compress);
fclose(File_uncompress);
}
void MainWindow::on_pushButton_2_clicked()
{
QByteArray src;
src.append("中华人民共和国,china mobile,123456 ");
unsigned long len_compress;
unsigned long len_uncompress;
unsigned char *buffer_compress = new unsigned char[MaxBufferSize];
unsigned char *buffer_uncompress = new unsigned char[MaxBufferSize];
compress(buffer_compress,&len_compress,(Bytef*)src.data(), src.length());
uncompress(buffer_uncompress,&len_uncompress,buffer_compress,len_compress);
qDebug() << "qt zlib:" ;
qDebug() << "src:\n" << src.data() << ",length:" << src.size() ;
qDebug() << "compress:\n" << buffer_compress << ",length:" << len_compress ;
qDebug() << "uncompress:\n" << buffer_uncompress << ",length:" << len_uncompress ;
}
执行效果:


参考http://www.cnblogs.com/chuncn/archive/2011/03/23/1992481.html
qt调用zlib实例http://download.csdn.net/detail/huangyuancao/7760919
qt 调用zlib压缩与解压缩功能的更多相关文章
- golang zlib 压缩,解压缩
package main import ( "bytes" "compress/zlib" "fmt" "io" &qu ...
- C#用Zlib压缩或解压缩字节数组
/// <summary> /// 复制流 /// </summary> /// <param name="input">原始流</par ...
- 使用ICSharpCode.SharpZipLib.Zip实现压缩与解压缩
使用开源类库ICSharpCode.SharpZipLib.Zip可以实现压缩与解压缩功能,源代码和DLL可以从http://www.icsharpcode.net/OpenSource/SharpZ ...
- Python3 压缩与解压缩(zlib / gzip / bz2 / lzma / zipfile / tarfile)
本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog.csdn.net/Rozol/article/details/72672703 以下代码以Python3.6.1为例 L ...
- Qt之zip压缩/解压缩(QuaZIP)
摘要: 简述 QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库.适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它 ...
- C#调用 ICSharpCode.SharpZipLib.Zip 实现解压缩功能公用类
最近想用个解压缩功能 从网上找了找 加自己修改,个人感觉还是比较好用的,直接上代码如下 using System; using System.Linq; using System.IO; using ...
- 【13】MD5编码、Zlib压缩解压缩
1.MD5加密 /// <summary> /// 使用MD5加密算法 /// </summary> /// <param name="md5MessageSt ...
- linux下各种文件格式的压缩以及解压缩命令
From : http://blog.csdn.net/mu0206mu/article/details/17732857 -------------------------------------- ...
- Jcompress: 一款基于huffman编码和最小堆的压缩、解压缩小程序
前言 最近基于huffman编码和最小堆排序算法实现了一个压缩.解压缩的小程序.其源代码已经上传到github上面: Jcompress下载地址 .在本人的github上面有一个叫Utility的re ...
随机推荐
- OpenLayers中的球面墨卡托投影
最近看OpenLayers,研究到地图投影时找到官方的文档,就翻译了一下,由于英文能力差,翻译不好的地方,请看原文 原文地址:http://docs.openlayers.org/library/sp ...
- Python深入:Distutils发布Python模块--转载
https://blog.csdn.net/gqtcgq/article/details/49255995 Distutils可以用来在Python环境中构建和安装额外的模块.新的模块可以是纯Pyth ...
- java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present错误
今天在搭建spring cloud的时候,发现一直报“java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not pr ...
- 手动添加jar包到maven仓库
引言: 虽然配置了maven以后可以通过索引的方式自动下载jar包到本地maven仓库,从而使项目中直接使用本地仓库里面的架包, 但是这一招并不是每一次都灵应,也有遇到了失败的时候,当遇到失败的时候, ...
- 串口.Qt532测试(同步)
环境:Win7x64.Qt5.3.2 MSVC OpenGL(x86).vs2010(x86) ZC:这里的例子是 同步的函数操作,貌似 如果子线程在等待 WaitCommEvent(...)或Rea ...
- Qt532.QString_填充字符
1.代码: void MainWindow::on_pushButton_clicked() { QString str = "; QString str01 = str.leftJusti ...
- Spring Boot的@SpringBootApplication无法引入的问题
转自:https://blog.csdn.net/cckevincyh/article/details/78962002 今天搭建了springboot,一开始遇到了一个问题,在自己创建的HelloA ...
- 第 8 章 容器网络 - 055 - 创建 macvlan 网络
1.创建 macvlan 网络 在 host1 和 host2 中创建 macvlan 网络 mac_net1: docker network create -d macvlan --subnet=1 ...
- SpringBoot集成TkMybatis插件
前提: 基于SpringBoot项目,正常集成Mybatis后,为了简化sql语句的编写,甚至达到无mapper.xml文件. 在本篇总结教程,不在进行SpringBoot集成Mybatis的概述. ...
- 一次dropzone体验
对于前端,本人不是太擅长,对于当前的一些网上的样例,也许是习武悟性太差,不是太透,所以只能通过blog的方式记录下一些武功套路,便于以后查询使用 首先,我们需要知道这个武功适应的战场. 什么是drop ...