public const int ItemSize = (1 + 8 + 4 + 4) + 1; // 1 more than length of fields internal MultiStreamItemHeader(QQnBinaryReader reader) { byte version = reader.ReadByte(); if (version == 1) { _offset = reader.ReadInt64(); _length = reader.ReadUInt32(); // As uint _itemType = reader.ReadInt32(); } else if (version == 2) { // Define some format which allows +4GB substream // When this is used we will need some more padding space; but it probably will never be written anyway // At least we can read them with this version _offset = reader.ReadInt64(); _length = reader.ReadInt64(); // As long _itemType = reader.ReadInt32(); } else { throw new InvalidOperationException(); } }