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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1黑马币
大家好:
          我这里有个问题,是java基础中的数组那一篇,就是利用数组的查表法,将十进制转为八进制,因为int类型有32位,而八进制是3位一组,这样我在 &7的时候,最后一组只有2位,这该怎么办? 给个提示就好。
          未免我描述的不清楚,我将附上我写的利用查表法将十进制转十六进制的代码,如下请查看:
          public static void toHex_2(int num){
            StringBuffer sb = new StringBuffer();
            char[] a = new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
            for(int x = 0;x<8;x++){
                int temp = num & 15;
                char b=a[temp];//对应的数组的值
                sb.append(b);
                num = num >>> 4;
            }
            
            System.out.println(sb.reverse());
        }

5 个回复

倒序浏览
回复 使用道具 举报
噢!我想了下,貌似可以用while,就不用for了,while(num != 0)的时候,那么会继续做运算,&7,然后作为角标查数组的值,然后存入StringBuffer中,然后输出。
回复 使用道具 举报
int类型是32位没错
&7也是 与3个二进制位,
然后32与3个二进制位,最后剩2个二进制位---

但!!! >>>4是右移四位啊,前面补0的啊,不是32与3 一直与到最后剩2个二进制位啊
回复 使用道具 举报
没懂你的 意思 转八进制?ABCDEF???16进制还是八进制 话说 求积倒取余不行吗 倒取之后查表得到1-8
回复 使用道具 举报
不是会在最左边自动加个0吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马