进制转换写成一个方法
曾经有人问我,进制直接转换,要写一个方法.我简单写了一下
public class Change {
public static void main(String[] args) {
//fun1(10); //十进制转二进制
//fun2(10); //十进制转八进制
//fun3(45); //十进制转转16进制
fun4(1010); // 二进制转十进制
}
public static void fun1(int a){
StringBuilder sb = new StringBuilder();
int b = 0;
while(a>0){
b = a%2;
sb.append(b);
a = a/2;
}
sb.reverse();
System.out.println(sb);
}
public static void fun2(int a){
StringBuilder sb = new StringBuilder();
int b = 0;
while(a>0){
b = a%8;
sb.append(b);
a = a/8;
}
sb.reverse();
System.out.println(sb);
}
public static void fun3(int a){
StringBuilder sb = new StringBuilder();
int b=0;
while(a>0){
b = a%16;
if(b<=9){
sb.append(b);
}else{
sb.append((char)(b+87));
}
a= a/16;
}
sb.reverse();
System.out.println(sb);
}
public static void fun4(int a){
StringBuilder sb = new StringBuilder();
String a1 = String.valueOf(a);
sb.append(a1);
int sum =0;
for (int i = 0; i < sb.length(); i++) {
String s = String.valueOf(sb.charAt(i));
int b = Integer.parseInt(s);
/*int p = (int) Math.pow(2,sb.length()-i-1);//这里我开始想到的是用Math里的pow方法,也可以实现 下面我又想到移位 两种都可以实现
sum += b*p;*/
sum+=b<<sb.length()-i-1;//左移位 和上面效果一样的, 有不明白的可以去看看移位的作用
}
System.out.println(sum);
}
}