这是一个特定于泄气算法的问题,但与gzip和zlib有关。
假设我有一个gzip文件,我知道该文件中有几个刷新点。其中一些是用Z_SYNC_FLUSH和其他Z_FULL_FLUSH制作的。如果我扫描这个文件,我可以找到所有的刷新点,因为它们立即遵循0000ffff的模式。
我知道我可以在Z_FULL_FLUSH点恢复解压缩,因为解压缩所需的所有信息都是可用的(IE:字典被重置)。但是,如果我试图从Z_SYNC_FLUSH解压缩,我通常会得到一个"zlib.error: error -3,同时解压缩:无效的距离太远了“错误。
问题是:如果我试图从一个Z_SYNC_FLUSH点解压缩,我可以保证:
换句话说,我是否保证永远不会使用错误的数据进行静默解压缩(我不是在讨论gzip末尾的CRC32检查,而是zlib是否会大声抱怨)?
假设:
发布于 2013-05-14 03:57:28
如果一个Z_SYNC_FLUSH导致的后续流不会给出一个距离太远的错误,那么它偶然地相当于一个Z_FULL_FLUSH,并且与之无法区分。
我不认为这种情况会经常发生。
https://stackoverflow.com/questions/16533924
复制相似问题