public UInt32 GetUInt32(int offset)
 {
     if (offset + 4 > writeOffset)
     {
         throw new IndexOutOfRangeException();
     }
     ms.Position = offset;
     if (BitConverter.IsLittleEndian && isBigEndian)
     {
         return(BigEndianUtil.ToUInt32(br.ReadBytes(4)));
     }
     return(br.ReadUInt32());
 }
 public Int16 GetInt16(int offset)
 {
     if (offset + 2 > writeOffset)
     {
         throw new IndexOutOfRangeException();
     }
     ms.Position = offset;
     if (BitConverter.IsLittleEndian && isBigEndian)
     {
         return(BigEndianUtil.ToInt16(br.ReadBytes(2)));
     }
     return(br.ReadInt16());
 }
 public void Write(int offset, UInt32 value)
 {
     if (offset + 4 > ms.Capacity)
     {
         throw new IndexOutOfRangeException();
     }
     ms.Position = offset;
     writeOffset = offset + 4;
     if (BitConverter.IsLittleEndian && isBigEndian)
     {
         bw.Write(BigEndianUtil.ToBytes(value));
     }
     else
     {
         bw.Write(value);
     }
 }