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

我发现将十六进制转换为二进制的方式如下:

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);

}

以上是 将十六进制字符串(hex)转换为二进制字符串 的全部内容, 来源链接: utcz.com/qa/434504.html

回到顶部