用于计算有限宽度数的最大值的函数

时间:2014-05-21 08:24:21

标签: c# .net math encoding

例如,为了计算3个字符长的base26的最大值,表达式将是(((26 * 26) + 26) * 26) + 26),但如果我只是想用零基数字系统计算相同长度的排列量那么我可以在Math类中使用Pow方法,如Math.Pow(26, 3)。 Math类中是否有任何方法可以执行先前的操作?

对于任何人的兴趣,这是我对Base26的编码方法:

    public static string ToBase26(uint u)
    {
        char[] cx = new char[7];
        int index = 0;

        while (u > 0)
        {
            u--;
            cx[index++] = (char)(65 + (u % 26));
            u /= 26;
        }

        Array.Resize(ref cx, index);
        Array.Reverse(cx);

        return new string(cx);
    }

1 个答案:

答案 0 :(得分:3)

使用最多n个字母的字母组合来标记某些内容,例如电子表格表格中的列,确实会给出

26+26^2+26+3+...+26^n

不同的标签。紧凑公式是几何和

26*(26^n-1)/25

准确k个字母的每个块可以被解释为以零填充格式在base-26中的数字0到26 ^ k-1。使用字母0,1,2,3,3个字母的块看起来像

000, 001, 002, 003, 010, ..., 033, 100, ..., 333

使用字母A,B,C,D的相应编码将是

AAA, AAB, AAC, AAD, ABA, ..., ADD, BAA, ..., DDD