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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Enhon1992 中级黑马   /  2015-5-27 21:36  /  460 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

先简单介绍一下将十进制转换成其他进制的思路   比如:int i=12   i在计算机中是按照二进制存放的 也就是说它是以 00000000 00000000 00000000 00001100形式存放在计算机中,要是从这个二进制的最右边开始 取n位 ,这n位二进制所表示的十进制数就是12 转换成2^n进制所表示的数的最后一位。比如:将12转换成8进制,  从12的二进制的最右边开始 取3位  既 100 ,100所表示的十进制是4  然后再取 3位 既001,001表示的十进制是1, 所以12用8进制表示就是14   要是想将12转换成16进制 就取4位 表示的十进制是12 在16进制中没有12,12对应的是c 所以12 的16进制就是c
  1.         //将十进制转换成二进制的方法
  2.         public String toBinary(int num)
  3.         {
  4.                 return to(num,1,1);
  5.         }
  6.        
  7.         //将十进制转换成八进制的方法
  8.         public String toOctal(int num)
  9.         {
  10.                 return to(num,7,3);
  11.         }
  12.         //将十进转换成十六进制的方法
  13.         public String toHex(int num)
  14.         {
  15.                 return to(num,15,4);
  16.         }

  17.         //这个方法是用来帮助完成进制的转换的 就是toBinary() toHex() toOctal()三个方法将公共的代码进行了封装
  18.         public String to(int num,int set,int set1)
  19.         {
  20.                 //如果num是0直接返回0
  21.                 if(num==0)
  22.                 {
  23.                         return "0";
  24.                 }
  25.                
  26.                 //创建一个char数组 利用该数组完成查表操作  并为该数组赋初始值
  27.                 char[] findArr=new char[]{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
  28.                
  29.                 //再创建一个char数组用来存放最后转换成功的结果 因为被转换的数是int类型的 即是转换成二进制 最后的结果 最多也就可以用32个字符来表示
  30.                 char[] resultArr=new char[32];
  31.                 //定义一个指针 用来操作resultArr数组
  32.                 int pos=resultArr.length;
  33.                 //定义一个临时标变量记录 记录每一次num 与上set的值
  34.                 int temp;
  35.                
  36.                 //利用查表法完成转换 并把结果存在resultArr数组中
  37.                 while(num!=0)
  38.                 {
  39.                         temp=num&set;               
  40.                         resultArr[--pos]=findArr[temp];
  41.                         num=num>>>set1;
  42.                 }
  43.                
  44.                 //遍历resultArr数组 将最后的结果存放在一个StringBuilder中
  45.                 StringBuilder strBuilder=new StringBuilder();
  46.                
  47.                 for(int i=pos;i<resultArr.length;++i)
  48.                 {
  49.                         strBuilder.append(resultArr[i]);
  50.                 }
  51.                
  52.                 //将strBuilder中的数据转成字符串返回
  53.                 return strBuilder.toString();
  54.                
  55.         }
复制代码


按照上面的思路 我们可以写出将十进制转换成其他进制的方法 比如:转换成4进制
public String toQuanternary(int num)
{
        return to(num,3,2);
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马