1

请帮我解决这个异常:-

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 转换成它的等价物十六进制值。

请帮忙....

4

2 回答 2

3

Along可以保存 64 位数据。a 可以表示的最大值long是 9223372036854775807(或 2 63 -1)。您尝试解析的字符串比这大得多

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

于 2011-10-05T07:30:38.007 回答
1

Long 对于您的目的来说很小。您可能想像这样使用 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
于 2011-10-05T08:06:37.933 回答