JAVA中关于进制间的相互转换

最近本人学习了关于用java来实现十进制转换二进制、八进制、十六进制的原理,现把代码分享给大家,希望能作为参考。


代码块

代码块语法遵循标准markdown代码,例如

/*
@java进制间的相互转换,此程序用的是查表法,作者:AFCU
*/

class Trans
{
    public static void main(string[] args)
    {
        /*
            在主方法中测试
        */
        //十进制转二进制结果
        toBin(6);
        //十进制转八进制结果
        toBa(10);
        //十进制转十六进制结果
        toHex(15);
    }
    //十进制转换二进制方法
    public static void toBin(int num)
    {
        toTrans(num,1,1);
    }
    //十进制转换八进制方法
    public static void toBa(int num)
    {
        toTrans(num,7,3);
    }
    //十进制转换十六进制方法
    public static void toHex(int num)
    {
        toTrans(num,15,4);
    }
    //定义一个公共方法,用来进制间的相互转换,此方法对于传入的数不做任何限制,正数、负数,都可以算出结果
    public static void toTrans(int num, int base, int offset)
    {
        //首先判断传入的参数是否为0,如果为0,则直接输出,并返回
        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 pos = arr.length;
        //开始循环,此过程中用的方法为&方法,向右移位数的方法
        while(num!=0)
        {
            int temp = num & base ;
            arr[--pos] = chs[temp];
            num = num >>> offset; //将之前的数右移
        }
        //用循环将数组中的数据打印
        for(int x=pos; x
        {
            System.out.print(arr[x]);
        }
    }
}

大家一起来学习,共同进步。

你可能感兴趣的:(技术笔记)