使用前导零将十六进制转换为二进制

Gib*_*bbs 2 java binary hex

我遵循以下方法

new Biginteger(str,16).toString(2);
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但它删除了前导零.如果输入字符串是"3031323334353637",我需要输出64位

但它返回62个字符.我可以使用for循环来做到这一点.没有循环,有没有其他方法可以做到这一点?

目标:使用前导零将十六进制转换为二进制

Ada*_*dam 7

您可以使用空格填充,String.format("%64s")然后用零替换空格.这样做的好处是可以处理任何大小的输入,而不仅仅是int范围内的某些内容.我猜你正在处理使用BigInteger的任意输入......

String value = new BigInteger("3031323334353637", 16).toString(2);
System.out.println(String.format("%64s", value).replace(" ", "0"));
Run Code Online (Sandbox Code Playgroud)

产量

0011000000110001001100100011001100110100001101010011011000110111
Run Code Online (Sandbox Code Playgroud)

说明... String.format("%64s,value)输出先前填充的字符串以填充64个字符.

"  11000000110001001100100011001100110100001101010011011000110111"
Run Code Online (Sandbox Code Playgroud)

然后使用String.replace(oldString,newString)将前导空格替换为"0"字符

"0011000000110001001100100011001100110100001101010011011000110111"
Run Code Online (Sandbox Code Playgroud)