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

时间:2017-04-30 13:26:51

标签: java binary

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

int n = scan.nextInt();
System.out.println(Integer.toBinaryString(n));

2 个答案:

答案 0 :(得分:6)

  

假设 010010 ....

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

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

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

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

或在您的情况下使用6位

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

答案 1 :(得分:0)

来自文档:

  

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

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

private String getBinaryString6Bit(int n) {
    String binaryNoLeadingZero = Integer.toBinaryString(n);
    return "000000"
            .substring(binaryNoLeadingZero.length())
            + binaryNoLeadingZero;
}