X13.Periphery.MsDevice.Serialize C# (CSharp) Method

Serialize() static private method

static private Serialize ( Topic t ) : byte[]
t Topic
return byte[]
    internal static byte[] Serialize(Topic t) {
      List<byte> ret=new List<byte>();
      switch(Type.GetTypeCode(t.valueType)) {
      case TypeCode.Boolean:
        ret.Add((byte)((t as DVar<bool>).value?1:0));
        break;
      case TypeCode.Int64: {
          long vo=(t as DVar<long>).value;
          long v=vo;
          do {
            ret.Add((byte)v);
            v=v>>8;
          } while(vo<0?(v<-1 || (ret[ret.Count-1]&0x80)==0):(v>0 || (ret[ret.Count-1]&0x80)!=0));
        }
        break;
      //case TypeCode.Double:
      case TypeCode.String: {
          string v=(string)t.GetValue();
          if(!string.IsNullOrEmpty(v)) {
            ret.AddRange(Encoding.Default.GetBytes(v));
          }
        }
        break;
      case TypeCode.Object:
        if(t.valueType==typeof(PLC.ByteArray) && t.GetValue()!=null) {
          ret.AddRange(((PLC.ByteArray)t.GetValue()).GetBytes());
        }
        break;
      }
      return ret.ToArray();
    }
    public static void ProcessInPacket(IMsGate gate, byte[] addr, byte[] buf, int start, int end) {