首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从冲洗点恢复减压

从冲洗点恢复减压
EN

Stack Overflow用户
提问于 2013-05-14 01:51:19
回答 1查看 937关注 0票数 1

这是一个特定于泄气算法的问题,但与gzip和zlib有关。

假设我有一个gzip文件,我知道该文件中有几个刷新点。其中一些是用Z_SYNC_FLUSH和其他Z_FULL_FLUSH制作的。如果我扫描这个文件,我可以找到所有的刷新点,因为它们立即遵循0000ffff的模式。

我知道我可以在Z_FULL_FLUSH点恢复解压缩,因为解压缩所需的所有信息都是可用的(IE:字典被重置)。但是,如果我试图从Z_SYNC_FLUSH解压缩,我通常会得到一个"zlib.error: error -3,同时解压缩:无效的距离太远了“错误。

问题是:如果我试图从一个Z_SYNC_FLUSH点解压缩,我可以保证:

  1. 正确地解压该块和随后的块
  2. “距离太远”错误失败

换句话说,我是否保证永远不会使用错误的数据进行静默解压缩(我不是在讨论gzip末尾的CRC32检查,而是zlib是否会大声抱怨)?

假设:

  1. 假设我能够完美地识别出同花顺点。让我们假设我没有将随机比特错误地识别为同步标记,也没有假设模式恰好出现在0类型块中。这是不现实的,但假设这是真的。
  2. 假设该文件从未损坏,并且始终是合法的gzip文件。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-14 03:57:28

如果一个Z_SYNC_FLUSH导致的后续流不会给出一个距离太远的错误,那么它偶然地相当于一个Z_FULL_FLUSH,并且与之无法区分。

我不认为这种情况会经常发生。

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

https://stackoverflow.com/questions/16533924

复制
相关文章

相似问题

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