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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
查表法:将所有的元素临时存储起来,建立对应关系。
十六进制:每一次&15后的值作为索引去查建立好的表,就可以找到对应的元素。
那么这个表怎么建立呢?可以通过数据的形式来定义。
查表法优化:将二进制、十六进制之间的共性提取出来建立方法。
*/
class ArrayBinHexYouHua
{
        public static void main(String[] args)
        {
                toBin(6);
                toBin(-1);
                toBa(60);
                toHex(60);
        }

        /*
        建表:发现结果出来了,却是反着的,可以通过StringBuffer reverse功能来完成。
        所以可以使用已经学过的容器:数组来完成存储。
        */
        public static void trans(int num,int base,int offset)  //num:传入数值。base:与“&”二进制基数。offset:向右偏移的位数。
        {
                if(num==0)
                {
                        System.out.println(0);
                        return ;
                }
                char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};  //定义二进制、八进制、十六进制表。
                char[] arr = new char[32];  //定义一个临时存储容器。int类型:4个字节*8位/字节=32个字节。
                int pos = arr.length;  //定义一个操作数组的指针。
                while(num!=0)
                {
                        int temp = num & base;
                        arr[--pos] = chs[temp];
                        num = num >>> offset;
                }
                //System.out.println("pos="+pos);
                for(int x=pos;x<arr.length;x++)  //存储数据的arr数组遍历。
                {
                        System.out.print(arr[x]);
                }
        }


        /*
        十进制-->二进制。与1,偏移1位。
        */
        public static void toBin(int num)
        {
                trans(num,1,1);
                System.out.println();
        }
        /*
        十进制-->八进制。与7,偏移3位。
        */
        public static void toBa(int num)
        {
                trans(num,7,3);
                System.out.println();
        }
        /*
        十进制-->十六进制。与15,偏移4位。
        */
        public static void toHex(int num)
        {
                trans(num,15,4);
                System.out.println();
        }
}

2 个回复

倒序浏览
看着有点复杂,好像Java中有专门的进制转换的方法,不用这么麻烦
回复 使用道具 举报
来看看~~这个毕老师视频里有 啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马