java – 将十六进制字符串(十六进制)转换为二进制字符串

我发现以下方式十六进制到二进制转换:

String binAddr = Integer.toBinaryString(Integer.parseInt(hexAddr, 16)); 

虽然此方法适用于小十六进制数字,但十六进制数字如下所示

A14AA1DBDB818F9759

抛出NumberFormatException。

因此,我写了以下方法似乎有效:

private String hexToBin(String hex){
    String bin = "";
    String binFragment = "";
    int iHex;
    hex = hex.trim();
    hex = hex.replaceFirst("0x", "");

    for(int i = 0; i < hex.length(); i++){
        iHex = Integer.parseInt(""+hex.charAt(i),16);
        binFragment = Integer.toBinaryString(iHex);

        while(binFragment.length() < 4){
            binFragment = "0" + binFragment;
        }
        bin += binFragment;
    }
    return bin;
}

上述方法基本上将十六进制字符串中的每个字符转换为二进制等效值,如果需要,将其连接到返回值。
这是否是正确的转化方式?还是我忽略可能导致我失败的方法?

提前感谢任何协助。

最佳答案
BigInteger.toString(radix)会做你想要的只要通过2的基数。

static String hexToBin(String s) {
  return new BigInteger(s, 16).toString(2);
}

转载注明原文:java – 将十六进制字符串(十六进制)转换为二进制字符串 - 代码日志