整数到二进制字符串删除Java中的前导零

整数到二进制字符串删除Java中的前导零,java,binary,Java,Binary,我想把一个整数转换成二进制字符串。我选择使用java允许的本机函数Integer.toBinaryString(n)。但不幸的是,这会修剪输出的前导零。例如,我将输入设为18,它将输出10010,但实际输出应为010010。有没有比编写用户定义函数更好/更快捷的方法将int转换为string?还是我做错了什么 int n = scan.nextInt(); System.out.println(Integer.toBinaryString(n)); 它应该是010010 不是真的,整数类型由3

我想把一个整数转换成二进制字符串。我选择使用java允许的本机函数
Integer.toBinaryString(n)
。但不幸的是,这会修剪输出的前导零。例如,我将输入设为
18
,它将输出
10010
,但实际输出应为
010010
。有没有比编写用户定义函数更好/更快捷的方法将int转换为string?还是我做错了什么

int n = scan.nextInt();
System.out.println(Integer.toBinaryString(n));
它应该是010010

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

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

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

String.format("%32s", Integer.toBinaryString(18)).replace(' ', '0')
或者在您的情况下使用6位

String.format("%6s", Integer.toBinaryString(18)).replace(' ', '0')

从文件中:

此值将转换为二进制(基数2)ASCII数字字符串,无额外的前导0

所以不,你没有做错什么。要获得所需的输出,您需要自己编写一个小方法。一种方法是准备一个带有所需输出长度的零的字符串,将其作为子字符串并附加值。 像

可能重复的(我知道这个标题听起来很疯狂,但看看)。
private String getBinaryString6Bit(int n) {
    String binaryNoLeadingZero = Integer.toBinaryString(n);
    return "000000"
            .substring(binaryNoLeadingZero.length())
            + binaryNoLeadingZero;
}