在Zip64 format,有一种叫做包含偏移到中央目录记录的Zip64结尾中央目录定位器Zip64中央目录定位器结束的目的是什么?
的
Zip64结尾报头。为什么你需要这个记录时,你可以通过它的幻数搜索'中央目录'的记录'的zip64结束?
编辑:请注意,查找定位器的唯一方法是查找定位器的幻数。这里的要点是,为什么还要用魔法数字直接搜索
zip64 end of central directory
记录时,为什么还要在第一个位置搜索带有定位符魔术数字的定位器?
在Zip64 format,有一种叫做包含偏移到中央目录记录的Zip64结尾中央目录定位器Zip64中央目录定位器结束的目的是什么?
的
Zip64结尾报头。为什么你需要这个记录时,你可以通过它的幻数搜索'中央目录'的记录'的zip64结束?
编辑:请注意,查找定位器的唯一方法是查找定位器的幻数。这里的要点是,为什么还要用魔法数字直接搜索
zip64 end of central directory
记录时,为什么还要在第一个位置搜索带有定位符魔术数字的定位器?
直接导航到文件中的字节偏移比搜索幻数要快得多。此外,不能保证幻数不会在数据中的其他位置找到,这可能会导致实现从错误的数据读取,如果它开始从无效但“假定正确”的位置读取数据。
在做了一些额外的实现之后,我认为最重要的是要注意“特殊用途数据可能驻留在zip64可扩展数据扇区字段”(在中央目录记录的Zip64末尾之后)。可能存在多个这些字段,每个字段都以2个字节的标头ID开头,接着是4个字节的数据大小 - 后跟实际的“特殊用途数据” - 允许多个2^32字节(4 GB)的数据。虽然这看起来极端,但这样做肯定会导致需要在定位器和“中央目录记录的Zip64末端”之间跨越磁盘。这里的大量数据不仅需要更长的时间来扫描签名,而且意外地发现最小4字节/ 32位“中央目录的zip64结尾”签名的随机机会将随着数据的长度而增加。
“查找定位器的唯一方法是查找定位器的幻数”是不正确的。如果存在,它应该在“中央目录记录结束”之前。从那里读回20个字节,然后读取下4个字节应该产生“中央dir定位符签名的zip64结束” - 可以用作完整性检查(而不是扫描它)。
中央目录定位器的zip64结尾是中央目录记录结束前的20个字节,因此您不必搜索它,只需检查它是否存在。它实际上是一个疯狂的规范中的一个理想记录。 – serbaut