【发布时间】:2012-03-04 00:24:30
【问题描述】:
我找到了以下十六进制到二进制转换的方式:
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;
}
上述方法基本上将十六进制字符串中的每个字符转换为等效的二进制,必要时用零填充,然后将其连接到返回值。 这是执行转换的正确方法吗?还是我忽略了一些可能导致我的方法失败的事情?
提前感谢您的帮助。
【问题讨论】:
-
长期不能满足您的需求吗?它也有 ToBinaryString()。这将支持...范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
-
如果您希望这样做,请告诉我,以便我发布答案。
-
您的代码对我来说看起来不错。您还可以查看以下链接:java2everyone.blogspot.in/2009/04/…