Wikipedia has an excellent description of the ZIP file format ,但“中央目录”结构让我感到困惑。具体是这样的:
This ordering allows a ZIP file to be created in one pass, but it is usually decompressed by first reading the central directory at the end.
问题是,即使是中央目录的尾随头也是可变长度的。那么,如何才能获得要解析的中央目录的开头呢?
(哦,在来这里问之前,我确实花了一些时间看 APPNOTE.TXT 白费力气:P)
最佳答案
我的哀悼,阅读维基百科的描述给了我一个非常强烈的印象,你需要做大量的猜测+检查工作:
从末尾向后搜索 0x06054b50 目录结束标记,向前查找 16 个字节以找到目录开始标记 0x02014b50 的偏移量,希望就是这样。你可以做一些完整性检查,比如在目录结束标签之后寻找注释长度和注释字符串标签,但感觉就像 Zip 解码器一样工作,因为人们不会在他们的 zip 注释、文件名等中放入有趣的字符向前。无论如何,完全基于维基百科页面。
关于zip - 如何在 zip 文件中找到 "Central Directory"的开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4802097/