我发现以下方式进行十六进制到二进制转换:
String binAddr = Integer.toBinaryString(Integer.parseInt(hexAddr, 16));
Run Code Online (Sandbox Code Playgroud)
虽然这种方法适用于小十六进制数,但是十六进制数如下
A14AA1DBDB818F9759
Run Code Online (Sandbox Code Playgroud)
抛出一个 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;
}
Run Code Online (Sandbox Code Playgroud)
上面的方法基本上取十六进制字符串中的每个字符并将其转换为二进制等效值,如果需要,将其与零连接,然后将其连接到返回值.这是执行转换的正确方法吗?或者我是否忽略了可能导致我失败的方法?
在此先感谢您的任何帮助.