public string Parse(EBinaryReader binreader)
 {
     switch (Type)
     {
         case SmartDataTypes.Byte:
         case SmartDataTypes.Char:
         case SmartDataTypes.Int:
         case SmartDataTypes.Long:
         case SmartDataTypes.Short:
         case SmartDataTypes.Float:
         case SmartDataTypes.Double:
         case SmartDataTypes.String:
         case SmartDataTypes.Bool:
         case SmartDataTypes.UTF8String:
             binreader.ReadByte();
             break;
         default:
             break;
     }
     switch (Type)
     {
         case SmartDataTypes.Byte:
             return binreader.ReadByte().ToString();
         case SmartDataTypes.Char:
             binreader.ReadByte();//I don't know why, just do it (always '\0')
             return binreader.ReadChar().ToString();
         case SmartDataTypes.Int:
             return binreader.ReadInt32().ToString();
         case SmartDataTypes.Long:
             return binreader.ReadInt64().ToString();
         case SmartDataTypes.Short:
             return binreader.ReadInt16().ToString();
         case SmartDataTypes.Float:
             return binreader.ReadSingle().ToString();
         case SmartDataTypes.Double:
             return binreader.ReadDouble().ToString();
         case SmartDataTypes.String:
             return binreader.ReadString();
         case SmartDataTypes.Bool:
             return binreader.ReadByte().ToString();
         case SmartDataTypes.UTF8String:
             return binreader.ReadUTFString();
         default:
             return "";
     }
 }