如何在java中获取整数的0填充二进制表示?

2022-08-31 07:54:28

例如,对于输出可以是(16 位数字):1, 2, 128, 256

0000000000000001
0000000000000010
0000000010000000
0000000100000000

我试过了

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

它为左填充放置空格:

`               1'

如何把 s 放在填充。我在格式化程序中找不到它。有没有另一种方法可以做到这一点?0

P.S. 这篇文章描述了如何使用左 0 填充来格式化整数,但不适用于二进制表示。


答案 1

我认为这是一个次优的解决方案,但你可以做

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

答案 2

java.util.Formatter中没有内置二进制转换,我建议您使用String.replace将空格字符替换为零,例如:

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

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

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

推荐