我是靠谱客的博主 眯眯眼龙猫,最近开发中收集的这篇文章主要介绍JAVA 进制转换的几个方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

进制转化在JAVA中已经封装好了.

无论是常规的10转2,8,16,还是相对应的2,8,16进制转化为10进制的方法,当然也包括10->n进制,n进制转10进制的常规方法.

都被封装在Integer对象中.

 

10进制转化其他进制对应的方法,参数:n(原10进制数据),r(进制),返回值
10进制转2进制Integer.toBinaryString(n);一个二进制字符串.
10进制转8进制Integer.toOctalString(n);一个八进制字符串
10进制转16进制Integer.toHexString(n);一个16进制字符串
10进制转 r 进制Integer.toString(100, 16);一个r进制字符串
public class Main {
	public static void main(String[] args) {
		int n = 18;
		Integer.toHexString(n);
		System.out.println(n + "的二进制是:" + Integer.toBinaryString(n));
		System.out.println(n + "的八进制是:" + Integer.toOctalString(n));
		System.out.println(n + "的十六进制是:" + Integer.toHexString(n));
		System.out.println(n + "的三进制是:" + Integer.toString(n, 3));
	}
}

结果是:

18的二进制是:10010

18的八进制是:22
18的十六进制是:12

18的三进制是:200

当然你也可以自己写一个算法:

// 一个char[]对象
private static char[] array = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
            .toCharArray();

    public static String myDec(int number, int n) {
        // String 是不可变的,每次改变都要新建一个Strng,很浪费时间。
        // StringBuilder是‘可变的String’ ,
        StringBuilder result = new StringBuilder();
        // 模拟计算进制的过程
        while (number > 0) {
            result.insert(0, array[number % n]);
            number /= n;
        }
        return result.toString();
    }

可以通过这个水题去练习一下10进制转2进制哦.

水题:查找输入整数二进制中1的个数

 

下面是r进制转10进制

r进制转10进制方法
radix进制的字符串s转10进制Integer.parseInt((String) s,(int) radix);

 

public class Main {
	public static void main(String[] args) {
		String s = "10101";//1+4+16==21
		System.out.println(Integer.parseInt(s,2));//结果是21
		 // Integer 中封装好了一个方法:
                // 能够直接计算二进制中的1的个数,在竞赛中很有用.
                // JDk8中的实现方法使用的是 & 操作,所以比正常的遍历要快的多.
                System.out.println(Integer.bitCount(21));
                // 上文是21的二进制,所以21的二进制中有 3 个‘1’,
	}
}

真的不考虑看一下水题吗??
水题:进制转化

 

 

应评论要求贴上数字补前置0的解决方案.

public class Main {
    public static void main(String[] args) {
        int a = 1;
        System.out.printf("%04dn", a);
        //. 运行结果: 0001 (使用printf几乎完全兼容C语言输出格式,适合刷OJ用)

        String str= String.format("%04d",a);
        System.out.println(str);
        // 也是0001 (感谢评论区提出的方法)
    }
}

 

最后

以上就是眯眯眼龙猫为你收集整理的JAVA 进制转换的几个方法的全部内容,希望文章能够帮你解决JAVA 进制转换的几个方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部