public static DownloadInfoExpandPacket[] DecodeArray(MemoryStream ms)
        {
            int length = PacketBase.ReadInt(ms);

            DownloadInfoExpandPacket[] packets = new DownloadInfoExpandPacket[length];
            for (int i = 0; i < packets.Length; i++)
            {
                packets[i] = DownloadInfoExpandPacket.Decode(ms);
            }
            return(packets);
        }
 public static byte[] EncodeArray(IDownloadInfoExpand[] packets)
 {
     using (MemoryStream ms = new MemoryStream())
     {
         PacketBase.WriteBytes(ms, packets.Length);
         for (int i = 0; i < packets.Length; i++)
         {
             PacketBase.WriteBytes(ms, DownloadInfoExpandPacket.Encode(packets[i]));
         }
         return(ms.ToArray());
     }
 }