进制转换写成一个方法

曾经有人问我,进制直接转换,要写一个方法.我简单写了一下

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);
}
}

posted @ 2017-06-28 09:19  一人一世界  阅读(138)  评论(0)    收藏  举报