java如何补全二进制中的0_如何在java中获得整数的0填充二进制表示?

问题

例如,for1, 2, 128, 256输出可以是(16位):

0000000000000001

0000000000000010

0000000010000000

0000000100000000

我试过了

String.format("%16s", Integer.toBinaryString(1));

它为左边填充放置空格:

` 1'

如何将0s用于填充。我在Formatter找不到它。还有另一种方法吗?

提前致谢。

P.1.this post描述了如何使用左0填充格式化整数,但它不适用于二进制表示。

#1 热门回答(159 赞)

我认为这是一个不理想的解决方案,但你可以做到

String.format("%16s", Integer.toBinaryString(1)).replace(' ', '0')

#2 热门回答(18 赞)

java.util.Formatter中没有构建二进制转换,我建议你使用String.replace将空格字符替换为零,如下所示:

String.format("%16s", Integer.toBinaryString(1)).replace(" ", "0")

或者实现自己的逻辑,将整数转换为二进制表示,并在thisso中给出的位置添加左边距。或者,如果你确实需要将数字传递给格式化,则可以将二进制表示形式转换为BigInteger,然后使用前导零格式化,但这在运行时非常昂贵,如:

String.format("%016d", new BigInteger(Integer.toBinaryString(1)))

#3 热门回答(8 赞)

我正在尝试各种各样的方法调用,我之前没有真正使用它们,它们取得了适度的成功,直到我想到了一些非常简单的东西,它可能会起作用,而且确实如此!

我确信之前已经考虑过,不确定它对于长字符串二进制代码是否有用,但它适用于16Bit字符串。希望能帮助到你!! (注意第二段代码得到改进)

String binString = Integer.toBinaryString(256);

while (binString.length() < 16) { //pad with 16 0's

binString = "0" + binString;

}

感谢Will帮助改进这个答案,让它在循环中工作。这可能有点笨拙但它有效,如果可以,请改进并评论....

binString = Integer.toBinaryString(256);

int length = 16 - binString.length();

char[] padArray = new char[length];

Arrays.fill(padArray, '0');

String padString = new String(padArray);

binString = padString + binString;

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值