问题:实现10进制与任意进制(进制36以内)互转函数
代码如下
/**
* 任意进制转10进制
* @param str
* @param base
* @return
*/
public static int BaseNToBase10(String str,int base){
//验证base 是否合规
if(base<1||base>36){
throw new RuntimeException();
}
String contrast = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int ret = 0;
for(int i=0,j=str.length();i<j;i++){
String sch = str.substring(i,i+1);
int temp = 1;
for(int k=1;k<j-i;k++){
temp = base*temp;
}
ret += contrast.indexOf(sch)*temp;
}
return ret;
}
/**
* 10进制转任意进制
* @param num
* @param base
* @return
*/
public static String Base10ToBaseN(int num,int base){
//验证base 是否合规
if(base<1||base>36){
return "";
}
String contrast = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
StringBuffer ret = new StringBuffer();
int a=1;
while(a!=0){
int b = num/base;
num = num%base;
if(b==0){
ret.append(contrast.substring(num,num+1));
a=0;
}else{
ret.append(contrast.substring(b,b+1));
}
}
return ret.toString();
}