Java~十进制转二进制和十六进制的多种方法(含完整代码和注解)

一.直接使用Java里面Integer类的方法

  • Integer.toBinaryString(data)    //data为十进制,转换成二进制

  • Integer.toHexString(data)        //data为十进制,抓换成十六进制

        System.out.println(Integer.toBinaryString(100));  // 将100转换成二进制输出
        System.out.println(Integer.toHexString(100));     // 将100转换成十六进制输出

哈哈,其实有现成工具,不用白不用,对吧。

但是也可以自己尝试着实现一下,并不是很难的,如下第二种方法

二.常规的取余法

    就和大家用手算把十进制转换成二进制和十六进制的方法原理一样,这里相当于是用java模拟了一遍。

    1.将十进制转换为 二进制

  这里我使用了ArrayList集合来存放余数,因为取余法要逆序输出,用ArrayList可以方便的使用Collections类的reverse方法将数组逆置,然后用for each顺序输出。当然也可以使用普通的数组,输出的时候注意一下要逆序输出就行。

public static void main(String[] args) {
    //输入10进制,输出它的二进制和十六进制
    Scanner sc = new Scanner(System.in);
    int data = sc.nextInt();    //输入10进制数
    {
        int d = data;
        ArrayList a = new ArrayList();
        while(d != 0)    //用除2取余法
        {
            a.add(d%2);
            d=d/2;
        }
        Collections.reverse(a);    //将数组逆置
        System.out.print(data+"的二进制为");
        for (Object o : a) {   //for each循环
            System.out.print(o);
        }
        System.out.println("");
        a.clear();
    }
}

    2.将十进制转换为十六进制

十六进制和二进制原理类似,唯一要注意的就是当余数超过10的时候,要用对应的字母来表示,这里我定义了一个char类型的temp数组实现数字和字母之间的转换。

还有就是十六进制情况下的字母大小写的问题,可能大多数人,包括老师教的时候都是大写(比如6A),其实小写字母也是一样的,我这里用的是小写字母(比如6a)。

public static void main(String[] args) {
    //输入10进制,输出它的二进制和十六进制
    Scanner sc = new Scanner(System.in);
    int data = sc.nextInt();    //输入10进制数
    {
        int d = data;
        ArrayList a = new ArrayList();
        while(d != 0)
        {
            if(d%16 < 10)
                a.add(d%16);
            else    //如果余数大于10,将其转换成字母
            {
                char[] temp = new char[]{'a', 'b', 'c', 'd', 'e', 'f'};
                a.add(temp[d%16-10]);
            }
            d=d/16;
        }
        Collections.reverse(a);  //将数组逆置
        System.out.print(data+"的十六进制为");
        for (Object o : a) {
            System.out.println(o);
        }
        System.out.println("");
        a.clear();
    }
}

运行结果: 


欢迎大家评论指正,一起交流学习◕‿◕

你可能感兴趣的:(java,算法)