在 Zip64 format ,有一个标题叫做
Zip64 end of central directory locator
包含到中央目录记录的 zip64 结尾的偏移量。为什么在 时需要此记录您可以通过其魔数(Magic Number)搜索“中央目录的 zip64 结尾”记录吗?
编辑:请注意,查找定位器的唯一方法是查找定位器的魔数(Magic Number)。这里的重点是,当您可以直接搜索
zip64 end of central directory
时,为什么还要首先搜索带有定位符魔数(Magic Number)的定位符?也通过它的魔数(Magic Number)记录?
最佳答案
直接导航到文件中的字节偏移量比搜索魔数(Magic Number)要快得多。此外,无法保证不会在数据中的其他地方找到魔数(Magic Number),如果它从无效但“假定正确”的位置开始读取,则可能导致实现读取不正确的数据。
在我自己围绕这个做了一些额外的实现之后,我认为最重要的是要注意“特殊用途的数据可能驻留在 zip64 可扩展数据扇区字段中”(在中央目录记录的 Zip64 结尾之后)。可能存在多个这些字段,每个字段以 2 个字节的 header ID 开头,后跟 4 个字节的数据大小 - 后跟实际的“特殊用途数据” - 允许多个 2^32 字节(4 GB)的数据.虽然这看起来很极端,但这样做肯定会导致需要在定位器和“中央目录记录的 Zip64 结尾”之间跨越磁盘。这里的大量数据不仅需要更长的时间来扫描签名,而且偶然发现最小 4 字节/32 位“中央目录的 zip64 结尾”签名的随机机会也会随着数据长度的增加而增加。
“查找定位器的唯一方法是查找定位器的魔数(Magic Number)”是不正确的。如果存在,则应紧接在“中央目录记录结束”之前。从那里读回 20 个字节,然后读取接下来的 4 个字节应该会产生“中央目录定位器签名的 zip64 结尾”——它可以用作健全性检查(而不是扫描它)。
关于zip - Zip64 'end of central directory locator' 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8187914/