Conversão de Hexadecimal para Decimal (números grandes)

Caros,
tentei fazer uma simples conversão de um valor hexa para decimal, da seguinte forma:

String hex = "FFAFB";
int dec = Integer.parseInt(str, 16);
System.out.println(dec);

Para valores pequenos funciona perfeitamente. Porém se passo um valor hexa maior, ocorre a exceção NumberFormatException.
Tentei também usando um long no lugar do int, mas a mesma exceção foi lançada.
Notei também que se eu informar um hexa com até 15 dígitos, não importando quais são, ele converte. Acima disso, não vai.
Alguém sabe porque isto ocorre?
Obrigado!

Porque o número é maior que o que cabe em um int ou long. Simples assim.

O que cabe em um:

short = 0x0000 a 0xFFFF
int = 0x00000000 a 0xFFFFFFFF
long = 0x0000000000000000L a 0xFFFFFFFFFFFFFFFFL

Se quiser usar números maiores, use um BigInteger.