返回信息流用到一个函数
int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);
总是不知道第三个参数该写入那个变量
各位能帮我看一下吗
PS:我是小白……
代码:
hDib = GlobalAlloc(GMEM_MOVEABLE,destLen);
// BYTE* pbyBmp = (BYTE *)::GlobalLock(hDib);
p = (LPBYTE)GlobalLock(hDib);
p2 = p;
//分段从SERVER获取数据
for(WORD i=0;i<destLen/US_MAXSIZE;i++)
{
len = recv(c_SCRsock,buf,US_MAXSIZE,0);
CopyMemory(p2,buf,US_MAXSIZE);
p2 = p2 + US_MAXSIZE;
send(c_SCRsock,(char*)&Flag,sizeof(Flag)+1,MSG_OOB);
}
if (destLen%US_MAXSIZE)
{
len = recv(c_SCRsock,buf,destLen%US_MAXSIZE,0);
CopyMemory(p2,buf,len);
p2 = p2 + destLen%US_MAXSIZE;
send(c_SCRsock,(char*)&Flag,sizeof(Flag)+1,MSG_OOB);
}
p2 = p2 - destLen;
BYTE* pbyBmp=(BYTE *)::GlobalLock(p2);
//解压缩
uLong uncomprLen=destLen*3;
BYTE* uncompr=(BYTE*)calloc((uInt)uncomprLen , 1);
int err = uncompress(uncompr, &uncomprLen, pbyBmp ,destLen ); [em17][em17]
这是一条镜像帖。来源:北邮人论坛 / cpp / #39579同步于 2010/5/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
在做远程控制 uncompress返回Z_DATA_ERROR怎么办
zhangch4021
2010/5/25镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
附函数介绍:
uncompress 函数将 source 缓冲区的内容解压缩到 dest 缓冲区。sourceLen 是 source 缓冲区的大小(以字节计)。注意函数的第二个参数 destLen 是传址调用。当调用函数时,destLen 表示 dest 缓冲区的大小, dest 缓冲区要足以容下解压后的数据。在进行解压缩时,需要提前知道被压缩的数据解压出来会有多大。这就要求在进行压缩之前,保存原始数据的大小(也就是解压后的数据的大小)。这不是 zlib 函数库的功能,需要我们做额外的工作。当函数退出后, destLen 是解压出来的数据的实际大小。
uncompress 若成功,则返回 Z_OK ;若没有足够内存,则返回 Z_MEM_ERROR;若输出缓冲区不够大,则返回 Z_BUF_ERROR。若输入数据有误,则返回 Z_DATA_ERROR。