public Inibin DeserializeInibin(byte[] data, string filepath) { _data = data; _inibin = new Inibin(); _inibin.FilePath = filepath; _inibin.Content = new Dictionary <uint, InibinValue>(); _reader = new BinaryReader(new MemoryStream(_data)); _reader.BaseStream.Seek(0, SeekOrigin.Begin); _inibin.Version = _reader.ReadByte(); _stringTableLength = _reader.ReadUInt16(); if (_inibin.Version != 2) { throw new InvalidDataException("Wrong Inibin version"); } _format = new BitArray(new byte[] { _reader.ReadByte(), _reader.ReadByte() }); for (int i = 0; i < _format.Length; i++) { if (_format[i]) { if (!DeserializeSegment(i)) { return(null); } } } return(_inibin); }
public byte[] SerializeInibin(Inibin inibin) { _inibin = inibin; _stream = new MemoryStream(); _writer = new BinaryWriter(_stream); //_inibin.Version = _reader.ReadByte(); //_stringTableLength = _reader.ReadUInt16(); if (_inibin.Version != 2) { throw new InvalidDataException("Wrong Inibin version"); } //_format = new BitArray(new byte[] { _reader.ReadByte(), _reader.ReadByte() }); //for (int i = 0; i < _format.Length; i++) //{ // if (_format[i]) // { // if (!SerializeSegment(i)) // return null; // } //} return(_stream.ToArray()); }