InputString中的NumberFormatException

时间:2011-10-05 07:27:34

标签: java parsing long-integer numberformatexception

请帮我解决这个例外: -

String strBinary="100000000000000001000000000000000000000000000000000000000000000000000000";
        System.out.println("length is " + strBinary.length()); 
        long intParse=Long.parseLong(strBinary, 2);
        System.out.println("int parsed is " +   intParse); 
        String hexString=Long.toHexString(intParse);
          System.out.println(hexString);

使用Long.parseLong解析时输出为72以及NumberFormatException。 但直到昨天,这个输入也运行得非常好。 它与长度有什么关系...... 我实际上是在尝试将String转换为等效的Hex值。

请帮忙......

2 个答案:

答案 0 :(得分:3)

long可以容纳64位数据。 long可以表示的最大值是9223372036854775807(或2 63 -1)。您尝试解析的字符串更大

可能可以使用BigInteger类去某个地方,它可以处理任意大小的整数值(当然有效地受内存限制)。

答案 1 :(得分:1)

长你的目的很小。您可能希望像这样使用BigInteger对象

String strBinary="100000000000000001000000000000000000000000000000000000000000000000000000";
BigInteger bigInteger = new BigInteger(strBinary, 2);
System.out.println(bigInteger.longValue()); //This would give you the long value
System.out.println(bigInteger.toString(16)); //This would give you the hex string