假设我有一个十六进制字符串0F0A
。我需要输出为0000111100001010
。我尝试了以下方法,但这会返回111100001010
- 我也需要前导0000
。
public static String hexToBinary(String hex) {
return new BigInteger(hex, 16).toString(2);
}
答案 0 :(得分:3)
你几乎就在那里......只需要格式化它:
String string = "0f0a";
String value = new BigInteger(string, 16).toString(2);
String formatPad = "%" + (string.length() * 4) + "s";
System.out.println(String.format(formatPad, value).replace(" ", "0"));
formatPad是padder(每个十六进制符号为4位)...在您的情况下 16
答案 1 :(得分:-1)
试试这段代码:
String hexToBinary(String hexString) {
int i = Integer.parseInt(hexString, 16);
String binaryString = Integer.toBinaryString(i);
String padded = String.format("%8s", Integer.toBinaryString(i)).replace(' ', '0')
return padded;
}