/* 压缩 data 原数据 ndata 原数据长度 zdata 压缩后数据 nzdata 压缩后长度 */
int httpgzcompress(Bytef *data, uLong ndata, Bytef *zdata, uLong *nzdata)
{z_stream c_stream;int err = 0;if (data && ndata > 0) {c_stream.zalloc = NULL;c_stream.zfree = NULL;c_stream.opaque = NULL;//只有设置为MAX_WBITS + 16才能在在压缩文本中带header和trailerif (deflateInit2(&c_stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED,MAX_WBITS, 8, Z_DEFAULT_STRATEGY) != Z_OK) return -1;c_stream.next_in = data;c_stream.avail_in = ndata;c_stream.next_out = zdata;c_stream.avail_out = *nzdata;while (c_stream.avail_in != 0) {if (deflate(&c_stream, Z_NO_FLUSH) != Z_OK) return -1;}if (c_stream.avail_in != 0) return c_stream.avail_in;for (;;) {if ((err = deflate(&c_stream, Z_FINISH)) == Z_STREAM_END) break;if (err != Z_OK) return -1;}*nzdata = c_stream.total_out;if (deflateEnd(&c_stream) != Z_OK) return -1;return 0;}return -1;
}/*解压*/
int httpgzdecompress(Byte *zdata, uLong nzdata, Byte *data, uLong *ndata)
{int err = 0;z_stream d_stream = { 0 }; /* decompression stream */unsigned char dummy_head[2] = { 0x1F, 0x8B };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_in < nzdata) {d_stream.avail_in = d_stream.avail_out = 2048; /* 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;}}*ndata = d_stream.total_out;if (inflateEnd(&d_stream) != Z_OK) return -1;return 0;
}

库是zlib,压缩后还可以进行加密,对数据体进行加密就行了。头加入: "Content-Encoding: gzip";

c++ http gzip压缩解压缩相关推荐

  1. 数据的gzip压缩解压缩_使用GZIP和压缩数据

    数据的gzip压缩解压缩 抽象 我们都知道用zip或gzip压缩文件的含义. 但是在Java中使用压缩文件并不像您想的那样简单,特别是如果您不是直接使用文件而是压缩流数据时. 我们会去: 如何将字符串 ...

  2. python利用gzip压缩解压缩StringIO

    python利用gzip压缩解压缩StringIO When working with a data stream instead of a file, use the GzipFileclass d ...

  3. c#实现linux中gzip压缩解压缩算法:byte[]字节数组,文件,字符串,数据流的压缩解压缩

    全栈工程师开发手册 (作者:栾鹏) c#教程全解 c#实现gzip压缩解压缩byte[]字节数组,文件,字符串. 测试代码 static void Main() {//测试字符串String inpu ...

  4. java实现linux中gzip压缩解压缩算法:byte[]字节数组,文件,字符串,数据流的压缩解压缩

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现gzip压缩解压缩byte[]字节数组,文件,字符串. 测试代码 public static void main(String[] a ...

  5. C++zlib库实现的GZIP压缩解压缩工具类【多图警告^_^】

    前几天和服务端同事联调TCP传输压缩后的Json串,遇到了 GZIP压缩问题. 需要把原来使用的的压缩算法和后端统一,现在来总结一下. [注意] 这里就以Windows的Debug环境为例,Relea ...

  6. python gzip压缩_Python gzip –压缩解压缩

    python gzip压缩 Python gzip module provides a very simple way to compress and decompress files and wor ...

  7. 一句代码实现gzip压缩解压缩

    import inet.whttp; var http = inet.whttp(); var str = http.get("http://www.sohu.com"," ...

  8. protobuf gzip压缩 解压缩的使用方法

    #include <google/protobuf/io/gzip_stream.h> #include <google/protobuf/io/zero_copy_stream_i ...

  9. linux gzip压缩/解压缩*.gz文件

    gzip命令是常用的压缩和解压缩命令. 语法帮助使用gzip --help可以查看使用手册: -c, --stdout write on standard output, keep original ...

最新文章

  1. 基于visual Studio2013解决面试题之0901奇偶站队
  2. 《预训练周刊》第15期:Bengio, Lecun, Hinton | 人工智能深度学习、用于图像分类的全局过滤网络...
  3. 清华自动驾驶前沿报告!解密六大关键技术,全球人才分布【附下载】| 智东西内参...
  4. .NET字符串操作类StringHelper (C#版)
  5. angr学习笔记(13)(static_binary)
  6. [LeetCode] Valid Anagram - 字符串排序比较系列
  7. 烧脑又过瘾!关于c²= b² + a²,你不知道的N个事实
  8. 检验int值在list中是否存在_R语言统计与绘图:卡方检验
  9. iOS工程师常用的命令行命令总结
  10. 江苏大学21考研计算机技术上岸
  11. anaconda打开python文本编辑器_【python】anaconda中打开IDLE(python 自带编辑器)
  12. 花式沉默Defender
  13. 怎么样绘制简易地图,如何制作一个电子地图?
  14. mac屏幕保护SaveHollywood安装方法
  15. 什么是RoIPooling和ROIAlign
  16. 初入react.js
  17. 大数据(Big Data)扫盲
  18. 【第39期】打破“打工人”魔咒,RPA 来狙击!
  19. 宇信科技收购鸿蒙,宇信科技(300674)12月26日14:30大单揭秘
  20. Pointofix安装与设置为中文

热门文章

  1. imx8的源码开发方式非yocto方式(三)——基于imx8的firmware-imx固件包下载与解压
  2. IDEA打包JavaWeb的War包并部署到Tomcat
  3. JS获取IP地址,登录地点的方法
  4. python证书过期_简单python脚本监控SSL证书到期提醒
  5. 高通平台开发系列讲解(外设篇)高通平台EMMC适配说明
  6. 生成式模型的发展历程
  7. 研华PCI板卡驱动装不了问题解决
  8. 项目经理的软技能、硬技能
  9. 氧饱夹语音芯片,内置功放直推喇叭输出,低成本语音IC,WTN6系列
  10. IE8的调试工具使用详解