BinaryString的整数删除Java中的前导零

Jac*_*r94 4 java binary

我想将整数转换为二进制字符串.我选择使用java允许的本机函数Integer.toBinaryString(n).但不幸的是,这会从我的输出中减少前导零.让我们举例说,我给输入18,它给我输出10010但实际输出应该是010010.将int转换为字符串是否比编写用户定义的函数更好/更短?或者我在这里做错了什么?

int n = scan.nextInt();
System.out.println(Integer.toBinaryString(n));
Run Code Online (Sandbox Code Playgroud)

ΦXo*_*a ツ 6

它假设是010010 ....

不是真的,整数类型由32位组成,所以它应该是:

000000000000000000000000010010,java不会打印该信息,左边的零在这种情况下与该数字的大小无关.

所以你需要自己附加前导零,因为该方法返回一个字符串,你可以格式化:

String.format("%32s", Integer.toBinaryString(18)).replace(' ', '0')
Run Code Online (Sandbox Code Playgroud)

或者在你的情况下使用6位

String.format("%6s", Integer.toBinaryString(18)).replace(' ', '0')
Run Code Online (Sandbox Code Playgroud)