为啥回复中问号的数目都赶上提问中的问号数了呢,郁闷……数制多不是问题吧,时间里都用到60进制了。把问题再说得明白点,整数进行数制转换要加上参数radix,而当radix不在Character.MIN_RADIX和Character.MAX_RADIX的范围内(也就是2-32)时会发生异常。而且默认的36个数码表示是0..9a..z。现在的问题是,能否扩充并且自定义这个表示,比如把10定义成A而不是a,把59定义成x,诸如此类的。

解决方案 »

  1.   

    要多少有多少,库自己扩
        public static void main(String[] arg)
        {
            System.out.println(toUnsignedString(65535,8));
            System.out.println(toUnsignedString(65535,32));
            System.out.println(toUnsignedString(65535,33));
        }
        public static String toUnsignedString(int i,int radix)
        {
            String tmp = "";
            do{
                int lf = 0;
                if(i<radix)
                {
                    tmp = digits[i] + tmp;
                    break;
                }
                lf = i%radix;
                tmp = digits[lf] + tmp;
                i = i/radix;
            }while(i!=0);
            return tmp;
        }
        final static char[] digits = {
    '0' , '1' , '2' , '3' , '4' , '5' ,
    '6' , '7' , '8' , '9' , 'a' , 'b' ,
    'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
    'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
    'o' , 'p' , 'q' , 'r' , 's' , 't' ,
    'u' , 'v' , 'w' , 'x' , 'y' , 'z' ,
            'A' , 'B' , 'C' , 'D' , 'E' , 'F' ,
            'G' , 'H' , 'I' , 'J' , 'K' , 'L' ,
            'M' , 'N' , 'O' , 'P' , 'Q' , 'R' ,
            'S' , 'T' , 'U' , 'V' , 'W' , 'X' ,
            'Y' , 'Z'         
        };
      

  2.   

    如果是BigInteger呢?我不是不会自己实现,只是觉得太累。如果有那种只要稍微改一下设置就能用的方法最好。先慰问一下楼上的。