static void Main(string[] args)
        {
            byte[] payload = { 1, 204, 99, 37, 86, 103, 105, 241, 16, 0, 107, 0, 16, 242, 151, 0, 0, 190 };
            var    message = GPSMessage.FromBinary(payload);

            System.Console.WriteLine(message.ToString());
            System.Console.ReadLine();
        }
        public static GPSMessage FromBinary(byte[] payload)
        {
            System.IO.MemoryStream stream = new System.IO.MemoryStream(payload);
            System.IO.BinaryReader reader = new System.IO.BinaryReader(stream);
            GPSMessage             result = new GPSMessage();

            result.ValidityFlags = reader.ReadByte();
            result.TargetLatRaw  = System.Net.IPAddress.NetworkToHostOrder(reader.ReadInt32());
            result.TargetLongRaw = System.Net.IPAddress.NetworkToHostOrder(reader.ReadInt32());
            return(result);
        }