When I do
BigInteger value = new BigInteger("FBD626CC4961A4FC", 16);
Java 8 does (somewhat) support unsigned longs, however, you can't just print them directly. Doing so will give you the result that you saw *.
If you have an unsigned long
Long number = Long.parseUnsignedLong("FBD626CC4961A4FC", 16);
you can get the correct string representation with the function
String numberToPrint = Long.toUnsignedString(number);
If you now print
numberToPrint you get
*To be more exact, your number is still going to be a regular signed
long which is why it shows overflow if printed directly. However, there are new static functions that will treat the value as if it was unsigned, such as this
Long.toUnsignedString(long x) or
Long.compareUnsigned(long x, long y).