예제 #1
0
 private void ParseMsg0(BigEndianBinaryReader reader)
 {
     string str;
     Msg0Block item = new Msg0Block
     {
         typeid_ui4 = reader.ReadUInt32(),
         head_length_ui2 = reader.ReadUInt16(),
         callid_ui4 = reader.ReadUInt32(),
         cell_id_ui4 = reader.ReadUInt32(),
         year_ui2 = reader.ReadUInt16(),
         month_ui1 = reader.ReadSByte(),
         day_ui1 = reader.ReadSByte(),
         hour_ui1 = reader.ReadSByte(),
         minute_ui1 = reader.ReadSByte(),
         second_ui1 = reader.ReadSByte(),
         localcell_id_ui1 = reader.ReadSByte(),
         micro_second_ui4 = reader.ReadUInt32(),
         direction_ui1 = reader.ReadSByte(),
         reserved_ui1 = reader.ReadSByte()
     };
     reader.BaseStream.Seek(item.head_length_ui2 - 0x16, SeekOrigin.Current);
     item.body_length_ui2 = reader.ReadUInt16();
     byte[] buffer = new byte[item.body_length_ui2];
     reader.Read(buffer, 0, item.body_length_ui2);
     item.setBody_bytes(buffer);
     Typeswitch.TryGetValue(item.typeid_ui4, out str);
     item.AsnParseClass = str;
     if ((ParTraces != null) && ParTraces.Contains(item.typeid_ui4))
     {
         if (IsParseAsn)
         {
             item.ParseAsn();
         }
         lstmsg.Add(item);
     }
     else if (ParTraces == null)
     {
         if (IsParseAsn)
         {
             item.ParseAsn();
         }
         lstmsg.Add(item);
     }
 }