毕老师视频中第五天数组的操作中有一道进制转换问题,因为是说明操作数组的最基本思想(操作角标),所以一直都是用操作角标的方式,比较繁琐。这里写到的转换同样用到了数组的查表法,但在返回字符时选择了字符串缓冲区而非操作角标。- package com.itheima;
- /**
- * 1,将十进制整数转成八进制
- * 2,将十进制整数转成十六进制
- * 3,将十进制整数转成二进制
- * @author wfq
- *
- */
- public class Test10 {
-
- public static void main(String[] args) {
-
- System.out.println(toHex(1468));
-
- System.out.println(decimalCast(1468, 2));
-
- }
- //将输入的十进制数转换为十六进制
- public static String toHex(int num) {
- return decimalCast(num, 16);
- }
- //将输入的十进制数转换为二进制
- public static String toBin(int num) {
- return decimalCast(num, 2);
- }
- //将输入的十进制数转换为八进制
- public static String toOct(int num) {
- return decimalCast(num, 8);
- }
- //将输入的十进制数转换为指定基数的进制
- public static String decimalCast(int num, int radix) {
- if(!(radix==2||radix==8||radix==16))
- throw new RuntimeException("基数错误...");
- if(num==0)
- return 0+"";
- char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
- StringBuilder sb = new StringBuilder();
- while (num!=0) {
- sb.append(chs[num&(radix-1)]);
- switch (radix) {
- case 2:
- num = num>>>1;
- break;
- case 8:
- num = num>>>3;
- break;
- case 16:
- num = num>>>4;
- break;
- }
- }
- return sb.reverse().toString();
- }
- }
复制代码
|
|