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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

毕老师视频中第五天数组的操作中有一道进制转换问题,因为是说明操作数组的最基本思想(操作角标),所以一直都是用操作角标的方式,比较繁琐。这里写到的转换同样用到了数组的查表法,但在返回字符时选择了字符串缓冲区而非操作角标。
  1. package com.itheima;
  2. /**
  3. * 1,将十进制整数转成八进制
  4. * 2,将十进制整数转成十六进制
  5. * 3,将十进制整数转成二进制
  6. * @author wfq
  7. *
  8. */
  9. public class Test10 {
  10.        
  11.         public static void main(String[] args) {
  12.                
  13.                 System.out.println(toHex(1468));
  14.                
  15.                 System.out.println(decimalCast(1468, 2));
  16.                
  17.         }
  18.         //将输入的十进制数转换为十六进制
  19.         public static String toHex(int num) {
  20.                 return decimalCast(num, 16);
  21.         }
  22.         //将输入的十进制数转换为二进制
  23.         public static String toBin(int num) {
  24.                 return decimalCast(num, 2);
  25.         }
  26.         //将输入的十进制数转换为八进制
  27.         public static String toOct(int num) {
  28.                 return decimalCast(num, 8);
  29.         }
  30.         //将输入的十进制数转换为指定基数的进制
  31.         public static String decimalCast(int num, int radix) {
  32.                 if(!(radix==2||radix==8||radix==16))
  33.                         throw new RuntimeException("基数错误...");
  34.                 if(num==0)
  35.                     return 0+"";
  36.                 char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  37.                 StringBuilder sb = new StringBuilder();
  38.                 while (num!=0) {
  39.                         sb.append(chs[num&(radix-1)]);
  40.                         switch (radix) {
  41.                         case 2:
  42.                                 num = num>>>1;
  43.                                 break;
  44.                         case 8:
  45.                                 num = num>>>3;
  46.                                 break;
  47.                         case 16:
  48.                                 num = num>>>4;
  49.                                 break;
  50.                         }
  51.                 }
  52.                 return sb.reverse().toString();               
  53.         }
  54. }
复制代码


2 个回复

正序浏览

这种变为字符串的并不复杂,主要就是一个查表法
回复 使用道具 举报
头疼的进制
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马