菜鸟问题,JAVA中任意进制整数的转换

downcast 2004-12-01 05:38:57
据说JAVA默认只支持2-36进制,超过36的要怎么转呢?不会要自己实现吧?
...全文
373 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
downcast 2004-12-06
  • 打赏
  • 举报
回复
如果是BigInteger呢?我不是不会自己实现,只是觉得太累。如果有那种只要稍微改一下设置就能用的方法最好。先慰问一下楼上的。
playgb 2004-12-02
  • 打赏
  • 举报
回复
要多少有多少,库自己扩
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'
};
downcast 2004-12-02
  • 打赏
  • 举报
回复
为啥回复中问号的数目都赶上提问中的问号数了呢,郁闷……数制多不是问题吧,时间里都用到60进制了。把问题再说得明白点,整数进行数制转换要加上参数radix,而当radix不在Character.MIN_RADIX和Character.MAX_RADIX的范围内(也就是2-32)时会发生异常。而且默认的36个数码表示是0..9a..z。现在的问题是,能否扩充并且自定义这个表示,比如把10定义成A而不是a,把59定义成x,诸如此类的。
playgb 2004-12-02
  • 打赏
  • 举报
回复
不会是搞数据压缩吧?
catblue 2004-12-02
  • 打赏
  • 举报
回复
为什么要用到那么多?
downcast 2004-12-01
  • 打赏
  • 举报
回复
现在遇到的问题需要62进制(10个数字加上大小写字母),有没有办法能自定义字符和数值的映射的?
redex 2004-12-01
  • 打赏
  • 举报
回复
你能用多少种进制啊?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧