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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

http://bbs.itheima.com/thread-199616-1-1.html 这个帖子里面我介绍了进制转换的另外一种方法 先介绍一下我的思路,就像图片中求8的二进制一样 除2 求、余数。 要是求的是8进制 就除8 求余数。
具体的代码:(注意下面的代码只能实现将一个正数装换其他的进制 ,由于负数在Java里面是这个负数对应的正数的二进制取反+1的形式存储的所以不能用这中思路去解决 ,但是http://bbs.itheima.com/thread-199616-1-1.html这个帖子中的方法可以实现负数的进制转换)
  1.         //这个方法是用来帮助完成进制的转换的 就是toBinary() toHex() toOctal()三个方法将公共的代码进行了封装
  2.         public static String  to(int num,int set,StringBuilder resultBuilder,char[] findArr)
  3.         {
  4.                 //如果传进来的数是0就直接返回“0”
  5.                 if(num==0)
  6.                 {
  7.                         return "0";
  8.                 }
  9.                 //如果穿件来的数字是负数 就返回null
  10.                 if(num<0)
  11.                 {
  12.                         return null;
  13.                 }
  14.                
  15.                 //如果大于0就进行递归
  16.                 if(num>0)
  17.                 {
  18.                         to( num/set,set,resultBuilder,findArr);
  19.                         //将每次通过查表法得到的数据 存到resultBuilder中
  20.                         resultBuilder.append(findArr[num%set]);
  21.                 }
  22.                
  23.                 //将最后的结果转换成字符串返回
  24.                 return resultBuilder.toString();
  25.                
  26.         }
  27.        

  28.         public static String toBinary(int num)
  29.         {
  30.                 //定义一个字符串容器用来装最后的结果
  31.                 StringBuilder resultBuilder=new StringBuilder();
  32.                 //创建一个char数组 利用该数组完成查表操作  并为该数组赋初始值  因为是转换成二进制 最后的结果中只会出现0,1 所以findArr只用赋2个值
  33.                 char[] findArr=new char[]{'0','1'};
  34.                 return to(num,2,resultBuilder,findArr);
  35.         }
  36.        
  37.         public static String toOctal(int num)
  38.         {
  39.                 //定义一个字符串容器用来装最后的结果
  40.                 StringBuilder resultBuilder=new StringBuilder();
  41.                 //创建一个char数组 利用该数组完成查表操作  并为该数组赋初始值  因为是转换成八进制 最后的结果中只会出现0-7 所以findArr只用赋8个值
  42.                 char[] findArr=new char[]{'0','1','2','3','4','5','6','7'};
  43.                 return to(num,8,resultBuilder,findArr);
  44.         }
  45.        
  46.         public static String toHex(int num)
  47.         {
  48.                 //定义一个字符串容器用来装最后的结果
  49.                 StringBuilder resultBuilder=new StringBuilder();
  50.                 //创建一个char数组 利用该数组完成查表操作  并为该数组赋初始值  因为是转换成十六进制 最后的结果中只会出现0-f所以findArr只用赋16个值
  51.                 char[] findArr=new char[]{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
  52.                 return to(num,16,resultBuilder,findArr);
  53.         }
  54.        
复制代码
按照上面的思路 我们可以写出将十进制转换成其他进制的方法 比如:转换成4进制
public static String toQuanternary(int num)
{                 StringBuilder resultBuilder=new StringBuilder();
                char[] findArr=new char[]{'0','1','2','3};
                return to(num,4,resultBuilder,findArr);

}


捕获.PNG (39.89 KB, 下载次数: 6)

捕获.PNG

0 个回复

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