Если строка всегда начинается с «0x» и является шестнадцатеричной:
String str = "0x9999999999999999";
BigInteger number = new BigInteger(str.substring(2));
лучше, проверьте, начинается ли она с «0x»
String str = "0x9999999999999999";
BigInteger number;
if (str.startsWith("0x")) {
number = new BigInteger(str.substring(2), 16);
} else {
// Error handling: throw NumberFormatException or something similar
// or try as decimal: number = new BigInteger(str);
}
Чтобы вывести еекак шестнадцатеричное или преобразовать в шестнадцатеричное представление:
System.out.printf("0x%x%n", number);
// or
String hex = String.format("0x%x", number);