Java中输出二进制,八进制,十六进制

在Java中,数字输出时,默认采用十进制输出。如果想要输出二进制,八进制和十六进制,需要一些特殊的方法。本文总结了一部分可以实现的方法如下:


1. 使用Integer.toXXXString()

说明:

二进制 Integer.toBinaryString()

八进制 Integer.toOctalString()

十六进制 Integer.toHexString()

代码示例:

int num1 = 25;

// 十进制输出(默认)
System.out.println("在十进制中,num1 = " + num1);

// 二进制输出
System.out.println("在二进制中,num1 = " + Integer.toBinaryString(num1));

// 八进制输出
System.out.println("在八进制中,num1 = " + Integer.toOctalString(num1));

// 十六进制输出
System.out.println("在十六进制中,num1 = " + Integer.toHexString(num1));

输出结果:

在十进制中,num1 = 25
在二进制中,num1 = 11001
在八进制中,num1 = 31
在十六进制中,num1 = 19

2. 使用DecimalFormat,输出固定长度的二进制,八进制和十六进制

说明:

你可能已经发现,使用Integer.toXXXString()输出的二进制,八进制和十六进制结果中,前面的0默认是不显示的,但是有的时候,我们可能需要输出固定长度的结果,例如00011001而非11001,怎样在结果的前方自动补齐呢?

可以使用DecimalFormat这个类来实现。

把上面的代码示例修改一下:

代码示例:

int num1 = 25;

// 输出固定长度为8的结果
DecimalFormat df = new DecimalFormat("00000000");

// 十进制输出(默认)
System.out.println("在十进制中,num1 = " + df.format(num1));

// 二进制输出
String num1InBinaryStr = Integer.toBinaryString(num1);
Integer num1InBinaryInt = Integer.valueOf(num1InBinaryStr);
System.out.println("在二进制中,num1 = " + df.format(num1InBinaryInt));

// 八进制输出
String num1InOctalStr = Integer.toOctalString(num1);
Integer num1InOctalInt = Integer.valueOf(num1InOctalStr);
System.out.println("在八进制中,num1 = " + df.format(num1InOctalInt));

// 十六进制输出
String num1InHexStr = Integer.toHexString(num1);
Integer num1InHexInt = Integer.valueOf(num1InHexStr);
System.out.println("在十六进制中,num1 = " + df.format(num1InHexInt));

输出结果:

在十进制中,num1 = 00000025
在二进制中,num1 = 00011001
在八进制中,num1 = 00000031
在十六进制中,num1 = 00000019

3. 使用printf()输出固定长度的八进制和十六进制

说明:

还有一种方法,可以输出固定长度的八进制和十六进制结果,就是printf(),但是这个方法不能输出二进制。

代码示例:

int num1 = 25;

// 十进制输出(默认)
System.out.printf("在十进制中,num1 = %08d\n", num1);

// 八进制输出
System.out.printf("在八进制中,num1 = %08o\n", num1);

// 十六进制输出
System.out.printf("在十六进制中,num1 = %08x\n", num1);

输出结果:

在十进制中,num1 = 00000025
在八进制中,num1 = 00000031
在十六进制中,num1 = 00000019
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容