當我做爲什麼我會得到一個值回從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