public recordIndex readIndex(byte[] data, ref int i) { recordIndex pIndex = new recordIndex(); if (!BitConverter.IsLittleEndian) { pIndex.dwOffset = Utils.BytesToUInt(EndianSwap(data, i, 4)); i += 4; pIndex.wMagic = Utils.BytesToUInt16(EndianSwap(data, i, 2)); i += 2; pIndex.wFlags = Utils.BytesToUInt16(EndianSwap(data, i, 2)); i += 2; pIndex.time_t = Utils.BytesToUInt(EndianSwap(data, i, 4)); i += 4; } else { pIndex.dwOffset = Utils.BytesToUInt(data, i); i += 4; pIndex.wMagic = Utils.BytesToUInt16(data, i); i += 2; pIndex.wFlags = Utils.BytesToUInt16(data, i); i += 2; pIndex.time_t = Utils.BytesToUInt(data, i); i += 4; } pIndex.sUUID = UUIDfromLLUUID(data, ref i); if (!BitConverter.IsLittleEndian) { pIndex.wType = Utils.BytesToUInt16(EndianSwap(data, i, 2)); i += 2; pIndex.dwSize = Utils.BytesToUInt(EndianSwap(data, i, 4), 0); i += 4; } else { pIndex.wType = Utils.BytesToUInt16(data, i); i += 2; pIndex.dwSize = Utils.BytesToUInt(data, i); i += 4; } return(pIndex); }
public SLCacheIndexRead(byte[] cacheindexdata) { int IndexCount = (cacheindexdata.Length / 34); int i = 0; SLCacheRecordIndex = new recordIndex[IndexCount]; // deserialize the number of record in the index. for (int iter = 0; iter < IndexCount; iter++) { recordIndex inex = readIndex(cacheindexdata, ref i); SLCacheRecordIndex[iter] = inex; } }