private static int GetPropertySize(string type) { if (TypeSize.ContainsKey(type)) { return(TypeSize[type]); } else { return(0); } }
private bool readInformation(ushort msglen) { int keylen = reader.ReadByte(); string key = readASCIIString(keylen); string keytype = key.Substring(0, key.IndexOf(' ')); string keyname = key.Substring(keytype.Length + 1); int arrlen = getArrayLength(ref keytype); int len = msglen - 1 - keylen; string info = ""; if (!TypeSize.ContainsKey(keytype)) { for (int i = 0; i < len; i++) { info += reader.ReadByte().ToString("X2"); } } else { if (len != typeSize[keytype] * arrlen) { Debug.WriteLine("[I]:msglen not match."); return(false); } if (keytype == "char") { info = readASCIIString(len); } else { for (int i = 0; i < arrlen; i++) { switch (keytype) { case "int8_t": info += reader.ReadSByte().ToString(); break; case "uint8_t": info += reader.ReadByte().ToString(); break; case "int16_t": info += reader.ReadInt16().ToString(); break; case "uint16_t": info += reader.ReadUInt16().ToString(); break; case "int32_t": info += reader.ReadInt32().ToString(); break; case "uint32_t": info += reader.ReadUInt32().ToString(); break; case "int64_t": info += reader.ReadInt64().ToString(); break; case "uint64_t": info += reader.ReadUInt64().ToString(); break; case "float": info += reader.ReadSingle().ToString(); break; case "double": info += reader.ReadDouble().ToString(); break; case "bool": info += reader.ReadBoolean().ToString(); break; } if (i != arrlen - 1) { info += ","; } } } } infomations.Add(new Tuple <string, string>(keyname, info)); return(true); }