免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1467 | 回复: 0
打印 上一主题 下一主题

[C++] 关于compress 解压之后失败 -3 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-19 17:54 |只看该作者 |倒序浏览
本帖最后由 rjamesz 于 2013-07-19 17:54 编辑
  1. #include <zlib.h>
  2. #include <iostream>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <string>
  6. #include <string.h>
  7. using namespace std;
  8. /*add by reggie */
  9. int main(){
  10.         string message,pmessage;
  11.         message = "absdfafsdsdf";
  12.         uLong destlen = compressBound((uLong)message.size());
  13.         const char *tmpbuf = message.c_str();
  14.         char *compressbuf = new char[destlen];
  15.         int ret = compress((Byte*)compressbuf, &destlen, (const Byte*)tmpbuf, (uLong)message.size());
  16.         fprintf(stderr,"before compress  is <%lu>,after compress is <%lu>\n",message.size(),strlen(compressbuf));
  17.         if(ret == Z_OK)
  18.         {
  19.                 fprintf(stderr, "compress success <%lu>\n", destlen);
  20.                 pmessage = compressbuf;
  21.         }
  22.         else
  23.         {
  24.                 fprintf(stderr, "compress failed: %d", ret);       
  25.                 pmessage = message;
  26.         }
  27.         delete[] compressbuf;
  28.         //fprintf(stderr,"after compress ptr is [%s],len is <%lu>\n",pmessage.c_str(),pmessage.size());
  29.         /*end by reggie*/
  30.        
  31.         /*add by reggie */
  32.         {uLong destlen = pmessage.size() * 30;//30随便写的,一般不超过10怕不够大
  33.         fprintf(stderr,"message size is <%lu>\n",pmessage.size());
  34.         char *uncompressbuf = new char[destlen];
  35.         int ret = uncompress((Byte*)uncompressbuf, &destlen, (const Byte*)pmessage.c_str(), pmessage.size());
  36.         fprintf(stderr,"uncompress string is [%s]\n",uncompressbuf);
  37.         if(ret == Z_OK)
  38.         {
  39.                 fprintf(stderr,"uncompress success %lu\n", destlen);
  40.         }
  41.         else
  42.         {
  43.                 fprintf(stderr, "uncompress failed: %d\n", ret);
  44.         }
  45.         delete[] uncompressbuf;
  46.         }
  47. }
复制代码
是想要给数据在网络传输中压缩一下,本来一个客户端压缩,服务端解压。上面的代码是我一个测试的代码,压缩完解压显示-3错误,为甚么有一些多余的变量,因为是在源码里面拿出来测试的,稍微改了一下。麻烦大家帮忙看下为甚么一直解压错误。
PS:编译的时候 -lz
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP