我发现了以下十六进制到二进制转换的方法:
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) http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#toString%28int%29会做你想做的事。只需传入基数 2 即可。
static String hexToBin(String s) {
return new BigInteger(s, 16).toString(2);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)