public static Header FromBytes (byte[] data)
{
Header header = new Header ();
EndianFlag endianness = (EndianFlag)data[0];
header.Endianness = endianness;
header.MessageType = (MessageType)data[1];
header.Flags = (HeaderFlag)data[2];
header.MajorVersion = data[3];
var reader = new MessageReader (endianness, data);
reader.Seek (4);
header.Length = reader.ReadUInt32 ();
header.Serial = reader.ReadUInt32 ();
FieldCodeEntry[] fields = reader.ReadArray<FieldCodeEntry> ();
foreach (var f in fields) {
header[(FieldCode)f.Code] = f.Value;
}
return header;
}