#include <QtCore/QCoreApplication>

#include "zlib.h"
#include "stdio.h"
#include <iostream>
using   namespace   std;
 
#define MaxBufferSize 999999
 
void Test1();
void Test2();
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    //Test1();
    Test2();
     
    return a.exec();
}
 
//c++ zlib
void Test1()
{
    FILE* File_src;
    FILE* File_compress;
    FILE* File_uncompress;
 
    unsigned long len_src;
    unsigned long len_compress;
    unsigned long len_uncompress;
 
    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-1,File_src);
    compress(buffer_compress,&len_compress,buffer_src,len_src);
    fwrite(buffer_compress,sizeof(char),len_compress,File_compress);
    cout << "normal zlib:" << endl;
    cout << "src:\n" << buffer_src << ",length:" << len_src << endl << endl;
    cout << "compress:\n" << buffer_compress << ",length:" << len_compress << endl << endl;
 
    //uncompress
    uncompress(buffer_uncompress,&len_uncompress,buffer_compress,len_compress);
    fwrite(buffer_uncompress,sizeof(char),len_uncompress,File_uncompress);
    cout << "uncompress:\n" << buffer_uncompress << ",length:" << len_uncompress << endl << endl;
 
    fclose(File_src);
    fclose(File_compress);
    fclose(File_uncompress);
}
 
//qt zlib
void Test2()
{
    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);
 
    cout << "qt zlib:" << endl;
    cout << "src:\n" << src.data() << ",length:" << src.size() << endl << endl;
    cout << "compress:\n" << buffer_compress << ",length:" << len_compress << endl << endl;
    cout << "uncompress:\n" << buffer_uncompress << ",length:" << len_uncompress << endl << endl;
}

c++ zlib(qt)压缩与解压缩的更多相关文章

  1. web服务交互中HTTP数据内容GZIP,ZLIB格式压缩与解压缩封装(共享)

    点击下载独立的dll //dll内部封装API格式 //gzip BOOL fnZlibDecompressPacket (__IN_PARAM unsigned char* gZlibDataBuf ...

  2. Python3 压缩与解压缩(zlib / gzip / bz2 / lzma / zipfile / tarfile)

    本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog.csdn.net/Rozol/article/details/72672703 以下代码以Python3.6.1为例 L ...

  3. python使用zlib实现压缩与解压字符串

    命令 字符串:使用zlib.compress可以压缩字符串.使用zlib.decompress可以解压字符串. 数据流:压缩:compressobj,解压:decompressobj 案例 >& ...

  4. Deflater与Inflater的压缩与解压缩

    原文:Deflater与Inflater的压缩与解压缩 package util; import java.util.Arrays; import java.util.zip.Deflater; im ...

  5. 利用JAVA API函数实现数据的压缩与解压缩

      综述 许多信息资料都或多或少的包含一些多余的数据.通常会导致在客户端与服务器之间,应用程序与计算机之间极大的数据传输量.最常见的解决数据存储和信息传送的方法是安装额外的存储设备和扩展现有的通讯能力 ...

  6. 关于 Delphi 中流的使用(7) 压缩与解压缩(TCompressionStream、TDecompressionStream)

    unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...

  7. Java 基础【12】 压缩与解压缩

    Java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类. 还包括使用 DEFLATE 压缩算法(用于 ZIP 和 GZIP 文件格式)对数据进行压缩和解压缩的类. 依赖 Jd ...

  8. 菜鸟学Linux命令:tar命令 压缩与解压缩

    tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件. tar最初被用来在磁带上创建档案,现在,用户可以 ...

  9. Linux系统之压缩、解压缩,vi编辑器,系统初始化服务和系统监控

    一.正文处理,压缩与解压缩 1.内容重定向>与>> >:覆盖,将>号左边的结果覆盖到>号右边的文件中,如果文件不存在,则先创建一个新的空文件并覆盖 >> ...

随机推荐

  1. ARC forbids Objective-C objects in structs or unions

    解决方法有二种: 1.在出错的地方加入__unsafe_unretained 2.关闭系统ARC.1.点击project   2.点击Build Setting    3.找到其以下的Objetive ...

  2. C#中的 SET ,GET

    C#中get和SET,看来看去还是看不懂,通俗一点解释一下,用了有什么好处,不用会怎么样如果你这样写是没有什么不一样的. private int __Old; public int Old{ get{ ...

  3. MOS简单应用

    高端功率开关驱动的原理非常简单,和低端功率开关驱动相对应,就是负载一端和开关管相连,另外一端直接接地.正常情况下,没有控制信号的时候,开关管不导通,负载中没有电流流过,即负载处于断电状态:反之,如果控 ...

  4. Django+uwsgi+nginx+angular.js项目部署

    这次部署的前后端分离的项目: 前端采用angular.js,后端采用Django(restframework),他俩之间主要以json数据作为交互 Django+uwsgi的配置可以参考我之前的博客: ...

  5. ubuntu安装交叉编译工具链

    一.sudo su 切换到root用户权限 二.将arm-linux-gcc-4.3.2.tgz从windows拷贝到Linux  /home/ttt/arm-linux-gcc-4.3.2.tgz ...

  6. 李洪强iOS开发之 - 项目架构

    李洪强iOS开发之 - 项目架构 01 - 在Appdelegate中设置跟控制器 //导入头文件

  7. webpack打包问题

    最近项目里需要替换一个logo,原先的logo打包后生成的静态文件里有对应的图片,替换了新的的图片打包后并没有生成相应的静态文件,两个图片都在同一个文件目录下,而且图片是直接引入并不会出现打包不到图片 ...

  8. Dash 使用

    花了 160 买了这个软件,至少看一遍它的 user guide,钱不能白花. https://kapeli.com/guide/guide.html 设置全局快捷键 Preference -> ...

  9. 高性能MySQL(三)

    服务器性能剖析 性能优化概述 性能优化是降低CPU使用率?错误,资源就是用来消耗的,新版本MySQL的InnoDB引擎对资源的利用率还增高了,所以这不是一个好的衡量标准. 提升每秒查询量?其实就是吞吐 ...

  10. 几个经典的TCP通信函数

    前言 在TCP通信中要使用到几个非常经典的函数( 点这里参考一个关于它们作用的形象比方 ),本文将对这几个函数进行一个简短的使用说明. socket函数 函数作用:创建一个网际字节流套接字 包含头文件 ...