A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public class TransferDemo {
  2.     public static void main(String[] args){
  3.         toHex(15);
  4.         toBin(-7);
  5.         toOctal(32);
  6.     }
  7.     //十进制——>二进制
  8.     public static void toBin(int num){
  9.         trans(num,1,1);
  10.     }
  11.     //十进制——>十六进制
  12.     public static void toHex(int num){
  13.         trans(num,15,4);
  14.     }
  15.     //十进制——>八进制
  16.     public static void toOctal(int num){
  17.         trans(num,7,3);
  18.     }
  19.     //进制转换的通用方法。
  20.     public static void trans(int num, int base, int offset){
  21.         if (num == 0){
  22.             System.out.println("0");
  23.             return;
  24.         }
  25.         char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  26.         //定义arr用来存储转换后的数据
  27.         char[] arr = new char[32];
  28.         //pos记录转换后数据的指标,因为数据是从右往前进行转换,因此pos从最后的数组元素角标开始递减。
  29.         int pos = arr.length;
  30.         //将待转换数据的与base进行&运算,然后再向右无符号移动offset位。
  31.         while(num != 0){
  32.             int temp = num & base;
  33.             arr[--pos] = chs[temp];
  34.             num = num >>> offset;
  35.         }
  36.         //System.out.println("pos = "+pos);
  37.         //打印转换后的数
  38.         for(int x = pos; x < arr.length; x++){
  39.             System.out.print(arr[x]);
  40.         }
  41.         System.out.println();
  42.     }
  43. }
复制代码


1 个回复

正序浏览
很强大,感谢楼主
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马