Java中的数字格式异常:未知的十六进制数

时间:2014-06-19 12:46:51

标签: java numberformatexception

我正在处理一个项目,我不得不将十六进制字符串转换为二进制字符串我使用了很多方法,但下面的代码对我来说最有用,尽管这段代码创建了一个未知的十六进制数字“l”看起来像1但不是一个,有人知道这是什么(l)?它是如何出现以及如何修复它并将其转换为“1”?

public String hexToBin(String hex){
String bin =new String();
String binFragment =new String();
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;
}

2 个答案:

答案 0 :(得分:0)

使用BigInteger.toString(radix)。基数是你想要使用的基础。所以使用二进制,也称为base2,填写2。

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

答案 1 :(得分:0)

您应该使用Integer.decode()代替Integer.parseInt(),因为它也会处理十六进制字符串。 看到; http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#decode(java.lang.String)