当我做为什么我会得到一个值回从Long.parseUnsignedLong时,我不应该
Long.parseUnsignedLong("FBD626CC4961A4FC", 16)
我回来-300009666327239428
这似乎错了,因为无符号长按的意义这个回答https://stackoverflow.com/a/2550367/1754020是范围总是正面的。
要想从这个十六进制值正确的号码,我做
BigInteger value = new BigInteger("FBD626CC4961A4FC", 16);
当我打印值它打印正确的值。但如果我做value.longValue()
再次我得到相同的-300009666327239428
是这个数字太大,溢出?
打印'Long.MAX_VALUE'并进行比较。是的,这太大了,不适合“长”。 – Tunaki
所以它不会抛出异常? –
[文档](https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html#parseUnsignedLong-java.lang.String-int-)声称它应该抛出一个' NumberFormatException'如果“字符串表示的值大于最大的无符号长整数2^64-1”。 对不起,我没有回答。 – tsm