Java之任意进制转换
问题描述:
现有的Java库函数有提供进制转换的方法
被封装在Integer对象中.
10进制转化其他进制 对应的方法,参数:n(原10进制数据),r(进制), 返回值
10进制转2进制 Integer.toBinaryString(n); 一个二进制字符串.
10进制转8进制 Integer.toOctalString(n); 一个八进制字符串
10进制转16进制 Integer.toHexString(n); 一个16进制字符串
10进制转 r 进制 Integer.toString(100, 16); 一个r进制字符串
具体实现:
public class Main {
public static void main(String[] args) {
int n = 16;
Integer.toHexString(n);//使用Integer对象的进制转换方法
System.out.println(n + "的八进制是:" + Integer.toOctalString(n));
System.out.println(n + "的二进制是:" + Integer.toBinaryString(n));
System.out.println(n + "的十六进制是:" + Integer.toHexString(n));
System.out.println(n + "的三进制是:" + Integer.toString(n, 3));
}
分析:可以写一个关于Java 任意进制转换的方法
利用StringBuilde 对象可随意更改其值,利用append()方法将值附加到缓冲区,
进制转换本质就是除留取余数;
代码测试
import java.util.Scanner;
public class jinzhizhuanhuan {
static char a[] =new char [36];
pubilc static void{
for(int i = 0;i<10;i++) {
a[i]=(char)('0'+i);
}
for(int i=10;i<a.length;i++) {
a[i]=(char)('A'+(i-10));
}
}
static String transRadix(String num,int fromRadix, int toRadix) {
int number=Integer.valueOf(num, fromRadix);
StringBuilder s=new StringBuilder();
while(number!=0) {
if(toRadix==0)
return null;
s.append(a[number%toRadix]);
number=number/toRadix;
}
return s.reverse().toString();
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.next();
System.out.println(transRadix(s,10,16));
}
}
效果:23
17h