【云解压】深入剖析ZIP文件格式——解析偏移计算与文件大小表示的ZIP32和ZIP64
最编程
2024-08-15 14:04:22
...
ZIP协议4个字节无符号数表示文件大小、偏移位等,最大值是4G,超过4G的文件,使用ZIP64协议;
采用long型来表示这些值
一、无符号数表示的方法:
* 4byte字节转为无符号LONG
* 算法:
* 1.unsignLongValue = sign4bytelongvalue & IntegerMaxValue
* 2.unsignLongValue = unsignLongValue|0x80000000L;
二、这里提供一个直接计算CDIR Range的方法:
CDIR偏移位计算算法:
1.注意不采用无符号小于2G 不会溢出
CDIRStartIndex = CDIRStartIndex(unsign);
2.或者直接计算
CDIRStartIndex = FileSize - CDIRSize - ECDIRSize;
三、ECDIRSize计算:
解析:
ECDIRSize = ECDIRFIXSize(22) + CommentLength;
直接计算方法:
ECDIRSize = ReadEndMaxSize - CheckSigIndex;
上一篇: 在云服务器上如何进行解压操作?
下一篇: 压力测试云服务器的解压命令