1、首先说为什么采用zlib解压,因为zlib可以解压内存数据。

2、下载zlib库后,自己在projcts目录里面根据需要编译lib库

3、静态链接只需要zlib.h ;zconf.h;zlib.lib三个文件即可(动态的不介绍了)

4、解压函数:

/* HTTP gzip decompress */

int httpgzdecompress(Byte *zdata, uLong nzdata,

Byte *data, uLong *ndata)

{

int err = 0;

z_stream d_stream = { 0 }; /* decompression stream */

static char dummy_head[2] =

{

0x8 + 0x7 * 0x10,

(((0x8 + 0x7 * 0x10) * 0x100 + 30) / 31 * 31) & 0xFF,

};

d_stream.zalloc = (alloc_func)0;

d_stream.zfree = (free_func)0;

d_stream.opaque = (voidpf)0;

d_stream.next_in = zdata;

d_stream.avail_in = 0;

d_stream.next_out = data;

//if (inflateInit2(&d_stream, -MAX_WBITS) != Z_OK) return -1;

if (inflateInit2(&d_stream, 47) != Z_OK) return -1;

while (d_stream.total_out < *ndata && d_stream.total_in < nzdata) {

d_stream.avail_in = d_stream.avail_out = 1; /* force small buffers */

if ((err = inflate(&d_stream, Z_NO_FLUSH)) == Z_STREAM_END) break;

if (err != Z_OK)

{

if (err == Z_DATA_ERROR)

{

d_stream.next_in = (Bytef*)dummy_head;

d_stream.avail_in = sizeof(dummy_head);

if ((err = inflate(&d_stream, Z_NO_FLUSH)) != Z_OK)

{

return -1;

}

}

else return -1;

}

}

if (inflateEnd(&d_stream) != Z_OK) return -1;

*ndata = d_stream.total_out;

return 0;

}直接调用就OK了 注意传入的buffer数据和长度都要赋值

eg:

char* pDest =  new char[1024 * 16];

uLong ulLength = 1024*16;

gzdecompress((Byte*)precvBuff, nCount, (Byte*)pDest, &ulLength);

android http zlib,利用zlib库对HTTP收到的gzip数据解压相关推荐

  1. Numpy:利用Numpy库建立可视化输入的二次函数数据点集np.linspace+np.random.shuffle+np.random.normal

    Numpy:利用Numpy库建立可视化输入的二次函数数据点集np.linspace+np.random.shuffle+np.random.normal 目录 输出结果 代码设计 输出结果 代码设计 ...

  2. libjpeg库的简单使用使用----jpeg图片解压

    libjpeg库其实已经可以满足我们日常处理日常简单图片之间的转换了.下面就来介绍一下jpeg库的解压和压缩过程. 首先来讲解压操作过程: 1.分配jpeg对象结构体空间,并初始化. 2.指定解压数据 ...

  3. 利用赫夫曼编码进行数据解压

    基本概念 代码实现 package com.atguigu.huffmancode;import com.sun.org.glassfish.external.statistics.CountStat ...

  4. Python 技术篇-利用pyqt5库读取剪切板已复制数据的格式类型实例演示,python判断复制文件的文件类型

    首先介绍下复制内容类型的几种分类: ['text/plain'] 是纯文本类型. ['text/html', 'text/plain'] 是 html 的格式 + 文本类型,找个网页复制一段文字就可以 ...

  5. Python:利用openpyxl库,将sorce.xlsx的数据复制到target.xlsx

    Ps:给自己留的备份,以后不想写不想查不想百度不想问了. import openpyxl wb_ini = openpyxl.load_workbook('source.xlsx') ws_ini = ...

  6. Python3-excel文档操作(四):利用openpyxl库处理excel表格:将数据进行可视化展示在Excel中

    1.简介: openpyxl不仅提供了将数据一行列的形式对应到Excel表格中,以及相关的添加,删除,获取等操作: 还提供了将数据进行图形化展示的相关组件(类),使得数据图形化在excel表格中的展示 ...

  7. Python 技术篇-用zipfile库进行zip文件的压缩与解压实例演示,python压缩本地文件夹为zip文件并保留目录结构

    首先给大家演示下 zip 文件的解压方法. import zipfiledef zip_extract_to(path_zip, path_aim):'''作用:解压压缩包参数一:压缩包位置参数二:解 ...

  8. 使用libjpeg-turbo库中的TurboJPEG API实现图片解压,缩放及压缩功能

    概述:前一篇博客中说到libjpeg-turbo的使用,有一些错误也在前篇博客中纠正了,现在呢,就用TurboJPEG API实现图片的解压,缩放,压缩. 1,直接上代码(简单粗暴,重要代码都加了注释 ...

  9. 利用Xshell连接服务器导入web安装包并解压启动

    1.首先我这里用的是腾讯云的服务器,将服务器开机 2.打开传说中的Xshell下载地址直接下载都一样的 3.下载完成之后,就可以进入Xshell连接云主机,顺便配置环境了 主机输入自己腾讯云的地址 4 ...

最新文章

  1. java中的Random()注意!
  2. 如何搞30等角视图.斜45度说法不合理
  3. 定制化Azure站点Java运行环境(1)
  4. Map的4种遍历方法
  5. 每日Linux命令(1)-date
  6. java null 转空_java 对象属性为 null 值转为 空串
  7. SpringBoot集成Mybatis用法笔记
  8. Packt发行的$ 5 Java编程书籍:精通Java 9,Java 9 High Performance
  9. rpm安装mysql5.5_CentOS下以RPM方式安装MySQL5.5
  10. mysql 存储汉字_MySQL存储汉字
  11. 树和二叉树2——输出广义表形式(带括号)二叉树
  12. [转载] Python Pandas 转换unix时间戳
  13. 一个入门级别的前端打包工具
  14. 算法:什么是棒球游戏问题?
  15. 51单片机学习笔记——DA转换
  16. 地方科技局重点科技项目在线申报管理系统
  17. “秘闻披露”:比尔·盖茨给QQ老总的一封信
  18. 三、路由协议——直连路由、静态路由、缺省路由、路由优先级和路由度量、路由冗余和备份(浮动静态路由)
  19. 玩 Spring框架
  20. 人力资源管理专业知识与实务(初级)【4】

热门文章

  1. windows中Linux ubuntu子系统 安装talib 编译talib python 安装 talib 报错 - 简书
  2. 图数据库介绍及简单入门
  3. 隐藏Tomcat版本信息
  4. idea解决快捷键冲突,自定义快捷键,常用快捷键
  5. 【git】当git出现On branch master Changes not staged for commit:
  6. EasyNTS上云网关设备在雪亮工程项目中的实战应用
  7. 安全规约ZSS ZSS+ ZSS# Scheme
  8. azw3怎么在PC电脑上打开?
  9. 零基础学Arcgis(十三)专题地图的编制
  10. 向量和矩阵的求导公式