菜鸟问题,JAVA中任意进制整数的转换
据说JAVA默认只支持2-36进制,超过36的要怎么转呢?不会要自己实现吧? 问题点数:20、回复次数:7Top
1 楼redex(cc)回复于 2004-12-01 17:43:22 得分 5
你能用多少种进制啊?Top
2 楼downcast()回复于 2004-12-01 17:50:08 得分 0
现在遇到的问题需要62进制(10个数字加上大小写字母),有没有办法能自定义字符和数值的映射的?Top
3 楼catblue(佛家说:一粒沙中看世界。)回复于 2004-12-02 09:43:03 得分 5
为什么要用到那么多?Top
4 楼playgb(溯缘)回复于 2004-12-02 09:52:50 得分 5
不会是搞数据压缩吧?Top
5 楼downcast()回复于 2004-12-02 10:13:42 得分 0
为啥回复中问号的数目都赶上提问中的问号数了呢,郁闷……数制多不是问题吧,时间里都用到60进制了。把问题再说得明白点,整数进行数制转换要加上参数radix,而当radix不在Character.MIN_RADIX和Character.MAX_RADIX的范围内(也就是2-32)时会发生异常。而且默认的36个数码表示是0..9a..z。现在的问题是,能否扩充并且自定义这个表示,比如把10定义成A而不是a,把59定义成x,诸如此类的。Top
6 楼playgb(溯缘)回复于 2004-12-02 10:45:07 得分 5
要多少有多少,库自己扩
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'
};Top
7 楼downcast()回复于 2004-12-06 20:32:31 得分 0
如果是BigInteger呢?我不是不会自己实现,只是觉得太累。如果有那种只要稍微改一下设置就能用的方法最好。先慰问一下楼上的。Top




