我遵循以下方法
new Biginteger(str,16).toString(2);
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但它删除了前导零.如果输入字符串是"3031323334353637",我需要输出64位
但它返回62个字符.我可以使用for循环来做到这一点.没有循环,有没有其他方法可以做到这一点?
目标:使用前导零将十六进制转换为二进制
您可以使用空格填充,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)
| 归档时间: |
|
| 查看次数: |
3513 次 |
| 最近记录: |