首页
学习
活动
专区
圈层
工具
发布

ZLIB压缩
EN

Stack Overflow用户
提问于 2012-09-23 17:37:30
回答 1查看 757关注 0票数 0

我正在做一个项目,在这个项目中,如果我的磁盘出现问题,我会在使用ZLIB压缩后将内存块发送到另一个磁盘。然后我计划下载这个转储文件并用于进一步的调试。这种压缩和上传是一次完成一个块-比方说1024K。

问题是,在我上传到另一个磁盘之前,我需要有恰好1024K的输出块(除此之外,还有头部和尾部,所以这个块的大小就是压缩数据的大小),这样我就可以很容易地解压缩它们并使用它。我尝试更改put_byte函数,以便一旦输出缓冲区为1024K,我就可以将其发送到另一个磁盘,但这似乎不起作用。

我想检查Z_BUF_ERROR,然后发送它,然后重新启动整个压缩过程,但是我不能确定是否所有挂起的输入/输出都被刷新了。

有没有其他方法可以做到这一点-例如,确保当输出缓冲区(压缩数据大小)正好有1024K字节时发送数据包。

EN

回答 1

Stack Overflow用户

发布于 2015-08-14 14:05:51

也许您会更幸运地使用更高级别的门面库,比如C++ http://github.com/rudi-cilibrasi/zlibcomplete ZLibComplete库。它使用std::string并且不需要动态分配,所以你不需要自己管理任何缓冲区,只需放入std::string并写出返回的std::string,你也不需要检查任何返回值,也不需要有条件地循环。它只是在字符串方面工作:放入一个字符串,取出一个字符串,只要你喜欢压缩或解压。对于GZip和ZLib这两种常见的压缩格式,您都可以从简短的工作示例程序开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12551219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档