描述:我们经常会碰到各种进制转换的问题,当然手动模拟写一个简单的转换也是可以的,其实在java里面有很多可以直接利用的方法,这里我总结一下,方便使用,看实例吧:
import java.util.*;
public class Main {
static Scanner in = new Scanner(System.in);
public static void main(String args[]){
System.out.println("十进制转换成X进制---利用Integer.toXString方法");
System.out.println();
int n = 20;
System.out.println("16进制:"+ Integer.toHexString(n));
System.out.println("8进制:"+ Integer.toOctalString(n));
System.out.println("2进制:"+ Integer.toBinaryString(n));
System.out.println();
System.out.println("X进制转换成十进制---利用Integer.valueOf方法");
System.out.println("16进制:"+ Integer.valueOf("FFFF", 16));
System.out.println("8进制:"+ Integer.valueOf("65", 8));
System.out.println("2进制:"+ Integer.valueOf("1100", 2));
System.out.println();
System.out.println("X进制转换成X进制---综合运用,先过渡到X进制,再转换成X进制");
System.out.println("16进制转换8进制");
System.out.println(Integer.toOctalString(Integer.valueOf("FF", 16)));
}
}
补充:如果数据范围很大的话就不用这种方法了,比较好的处理方式就是手动模拟计算过程并且转化为数组处理。这里我提供一个简单的模板:
import java.util.*;
public class Main {
static Scanner in = new Scanner(System.in);
public static void main(String args[]){
int n = in.nextInt();
int radix = in.nextInt();//进制
int[] res = new int[1000];
int k = 0;
while(n!=0) {
res[k++] = n%radix;
n/=radix;
}
for(int i = k - 1;i >= 0;i--)//注意逆序输出才是结果
System.out.print(res[i]);
}
}