用于十六进制到二进制转换的java填充,因此每个十六进制数字产生4位
我有以下代码试图用零填充二进制字符串:
int i = Integer.parseInt(input, 16);
String binaryString = Integer.toBinaryString(i);
String pad = String.format("%4s", Integer.toBinaryString(i)).replace(' ', '0');
当输入为"1"
时,它会正确地生成"0001"
,但如果我添加额外的十六进制数字,它就不会再添加填充。例如,"2F"
生成"101111"
,但我希望它是8位,就像001011111
我该怎么解决这个问题
# 1 楼答案
您的问题是,您指定了
4
的最小宽度,但2F
有6个位,因此生成了6个字符你可以:
最简单的方法是基于字符串的方法,如果你重新表述你的需求“总是产生4位的倍数”
以下是你如何做到这一点:
不同之处在于,我将输出更改为
32
个字符(一个int
可以达到的最大位),并通过向代码中添加.replaceAll("^(0000)+", "")
一次删除前导零4正则表达式匹配“字符串开头的一个或多个
0000
”,替换项为空,因此任何匹配项都被“删除”