/// <summary> /// 将列号转换为文本形式 /// </summary> /// <param name="column">待转换的列号,从0开始</param> /// <returns>列号对应的A1格式地址</returns> internal static string ColumnToText(int column) { ExceptionIntervalOut.Check(0, null, column); const int begin = 'A'; return(ToolBit.FromDecimal(column, 26).Integer.PackIndex(true). Select(x => (char)(begin + (x.Index == 0 && x.Count > 1 ? x.Elements - 1 : x.Elements))).Join()); }
/// <summary> /// 枚举一个枚举的所有位域, /// 即便该枚举没有<see cref="FlagsAttribute"/>特性,也不受影响 /// </summary> /// <typeparam name="Obj">待返回位域的枚举类型</typeparam> /// <param name="obj">待返回位域的枚举</param> /// <returns></returns> public static IEnumerable <Obj> AllFlag <Obj>(this Obj obj) where Obj : Enum => ToolBit.AllFlag(obj.To <int>(), 31). Select(x => (Obj)Enum.ToObject(typeof(Obj), x.Power));
static IEnumerable <int> Flag(int Num, int MaxIndex) => ToolBit.AllFlag(Num, MaxIndex).Select(x => x.Index);