char[] s 转换前的数字
char[] s2 转换后的数字
d1 原进制数
d2 需要转换到的进制数
注意:
高于9的位数用大写'A' ~'Z'表示
import java.util.Scanner;
public class 任意进制转换 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1 = sc.next();
char[] s = s1.toCharArray();
char[] res = new char[100];
conversion(s,res,10,16);//表示2进制转换成10进制
StringBuffer sb = new StringBuffer();
for(int i = 0;i < res.length;i++) {
if(res[i] == '\0') break;
sb.append(res[i]);
}
System.out.println(sb.reverse());
}
public static void conversion(char[] s,char[] s2,long d1,long d2) {
long i,j,t,num;
char c;
num = 0;
for(i = 0;i < s.length;i++) {
if(s[(int)i] <= '9' && s[(int)i] >= '0') {
t = s[(int)i] - '0';
}else {
t = s[(int)i] - 'A' + 10;
}
num=num*d1+t;
}
i = 0;
while(true) {
t = num % d2;
if(t <= 9) {
s2[(int)i] = (char) (t + '0');
}else {
s2[(int)i] = (char) (t + 'A' - 10);
}
num = num / d2;
if(num == 0) break;
i++;
}
for(j = 0;j < i / 2;j++) {
c = s2[(int)j];
s2[(int)j] = s[(int)(i - j)];
s2[(int)(i - j)] = c;
}
s2[(int)(i + 1)] = '\0';
}
}