游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2144|回复: 2

zlib的compress函数参数问题

[复制链接]

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
发表于 2006-7-13 15:14:00 | 显示全部楼层 |阅读模式
int compress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);

  compress函数将 source 缓冲区中的内容压缩到 dest 缓冲区。 sourceLen 表示source 缓冲区的大小(以字节计)。注意函数的第二个参数 destLen 是传址调用。当调用函数时,destLen表示 dest 缓冲区的大小,destLen > (sourceLen + 12)*100.1%。当函数退出后,destLen 表示压缩后缓冲区的实际大小。此时 destLen / sourceLen 正好是压缩率。

  compress 若成功,则返回 Z_OK;若没有足够内存,则返回 Z_MEM_ERROR;若输出缓冲区不够大,则返回 Z_BUF_ERROR。


dest buffer保持多大才不会出现Z_MEM_ERROR错误
以及“uLongf *destLen”,destLen在函数执行前应该赋什么值?(sourceLen + 12)*100.1%吗?

谢谢~

0

主题

172

帖子

176

积分

注册会员

Rank: 2

积分
176
发表于 2006-7-13 18:28:00 | 显示全部楼层

Re:zlib的compress函数参数问题

ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
/*
     compressBound() returns an upper bound on the compressed size after
   compress() or compress2() on sourceLen bytes.  It would be used before
   a compress() or compress2() call to allocate the destination buffer.
*/

86

主题

2251

帖子

2386

积分

金牌会员

Rank: 6Rank: 6

积分
2386
QQ
 楼主| 发表于 2006-7-14 09:02:00 | 显示全部楼层

Re:zlib的compress函数参数问题

3Q!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 23:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表