如何在java中获得整数的0填充二进制表示?
例如,对于1, 2, 128, 256
,输出可以是(16位):
0000000000000001
0000000000000010
0000000010000000
0000000100000000
我试过了
String.format("%16s", Integer.toBinaryString(1));
它为左填充留出了空间:
` 1'
如何放置0
作为填充。我在Formatter里找不到它。还有别的方法吗
p.S.this post描述了如何使用左0填充设置整数的格式,但它不适用于二进制表示
# 1 楼答案
java中没有内置二进制转换。util。格式化程序,我建议你要么使用字符串。replace将空格字符替换为零,如:
或者实现自己的逻辑,将整数转换为二进制表示,并在thisso中给出的行中添加左填充。 或者,如果确实需要将数字传递到格式,可以将二进制表示形式转换为BigInteger,然后使用前导零对其进行格式设置,但这在运行时非常昂贵,如:
# 2 楼答案
user3608934想法的一个更简单版本“这是一个老把戏,创建一个16 0的字符串,然后附加你得到的修剪过的二进制字符串”:
# 3 楼答案
这里有一个旧帖子的新答案
要用前导零将二进制值填充到特定长度,请尝试以下操作:
如果
len = 4
和val = 1
返回字符串
"10001"
,然后丢弃第一个字符。所以我们得到了我们想要的:
如果
val
很可能是阴性,那么尝试以下方法:# 4 楼答案
我认为这是一个次优的解决方案,但你可以这样做
# 5 楼答案
您可以使用Apache Commons StringUtils。它提供了填充字符串的方法:
# 6 楼答案
我尝试了各种各样的方法调用,我以前没有真正使用过这些方法来实现这一点,它们都取得了一定的成功,直到我想到了一个非常简单的方法,它可能会成功,而且成功了
我相信这是以前考虑过的,不确定它对长字符串的二进制代码是否有用,但它对16位字符串很好。希望有帮助!!(注意,第二段代码得到了改进)
多亏了威尔帮助改进了这个答案,使它在没有循环的情况下工作。 这可能有点笨拙,但它的工作,请改进和评论回来,如果你可以