public unsafe static TmphSubArray<int> splitIntNoCheck(this string ints, char split)
 {
     TmphSubArray<int> values = new TmphSubArray<int>();
     if (ints != null && ints.Length != 0)
     {
         fixed (char* intPoint = ints)
         {
             int intValue = 0;
             for (char* next = intPoint, end = intPoint + ints.Length; next != end; ++next)
             {
                 if (*next == split)
                 {
                     values.Add(intValue);
                     intValue = 0;
                 }
                 else
                 {
                     intValue *= 10;
                     intValue += *next;
                     intValue -= '0';
                 }
             }
             values.Add(intValue);
         }
     }
     return values;
 }
 /// <summary>
 ///     获取字段成员集合
 /// </summary>
 /// <param name="type"></param>
 /// <param name="attribute"></param>
 /// <param name="memberCountVerify"></param>
 /// <param name="fixedSize"></param>
 /// <param name="nullMapSize"></param>
 /// <returns>字段成员集合</returns>
 public static TmphSubArray<TmphMemberInfo> GetFields(Type type, TmphDataSerialize attribute, out int memberCountVerify,
     out int fixedSize, out int nullMapSize)
 {
     var fieldIndexs =
         (TmphFieldIndex[])
             typeof(TmphMemberIndexGroup<>).MakeGenericType(type)
                 .GetMethod("GetFields", BindingFlags.Static | BindingFlags.Public)
                 .Invoke(null, new object[] { attribute.MemberFilter });
     var fields = new TmphSubArray<TmphMemberInfo>(fieldIndexs.Length);
     var nullMapIndex = 0;
     fixedSize = nullMapSize = 0;
     foreach (var field in fieldIndexs)
     {
         type = field.Member.FieldType;
         if (!type.IsPointer && (!type.IsArray || type.GetArrayRank() == 1) && !field.IsIgnore)
         {
             var memberAttribute = field.GetAttribute<TmphBinarySerialize.TmphMember>(true, true);
             if (memberAttribute == null || memberAttribute.IsSetup)
             {
                 var value = TmphMemberInfo.GetSerialize(field);
                 if (type != typeof(bool)) fixedSize += value.SerializeFixedSize;
                 nullMapSize += value.NullMapSize;
                 if (value.NullMapSize == 2)
                 {
                     value.SerializeNullMapIndex = nullMapIndex;
                     nullMapIndex += 2;
                     --fixedSize;
                 }
                 fields.Add(value);
             }
         }
     }
     memberCountVerify = fields.Count + 0x40000000;
     fixedSize = (fixedSize + 3) & (int.MaxValue - 3);
     nullMapSize = ((nullMapSize + 31) >> 5) << 2;
     fields.Sort(TmphMemberInfo.SerializeFixedSizeSort);
     foreach (var value in fields)
     {
         if (value.NullMapSize == 1) value.SerializeNullMapIndex = nullMapIndex++;
     }
     return fields;
 }