请帮我解决这个例外: -
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值。
请帮忙......
答案 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