gpt4 book ai didi

c - ZLIB 压缩

转载 作者:行者123 更新时间:2023-11-30 17:57:57 29 4
gpt4 key购买 nike

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

问题是,在将其上传到另一个磁盘之前,我需要有正好 1024K 的输出 block (除此之外,还会有 header 和尾部,因此该 block 大小就是压缩数据的大小),然后我可以轻松解压并使用它们。我尝试更改 put_byte 函数,以便一旦输出缓冲区为 1024K,我就可以将其发送到另一个磁盘,但这似乎不起作用。

我想检查 Z_BUF_ERROR,然后将其发送并重新启动整个压缩过程,但随后我不确定是否所有待处理的输入/输出都已被刷新。

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

最佳答案

也许使用更高级别的外观库(如 C++ http://github.com/rudi-cilibrasi/zlibcomplete)会更好。 ZLib完整库。它使用 std::string 并且不需要动态分配,因此您不需要自己管理任何缓冲区,只需放入 std::string 并写出返回的 std::string 您也不需要检查任何返回值,也不需要你需要有条件地循环吗?它只是按照字符串工作:放入一个字符串,取出一个字符串,只要您愿意压缩或解压缩即可。您可以从适用于两种常见压缩格式(GZip 和 ZLib)的简短工作示例程序开始。

关于c - ZLIB 压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551219/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com