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;