Причиной сбоя является то, что вы пытаетесь поместить +0xff8ca87c
в целое число со знаком.Максимальное значение 32-разрядного целого числа со знаком составляет +0x7fffffff
, поскольку для хранения знака используется старший значащий бит.
Попробуйте вместо этого использовать long
.Максимальное значение 64-битного целого со знаком - 0x7fffffffffffffff
, что более чем достаточно для ваших нужд в этом случае.
Или в Java 8 вы можете использовать Integer.parseUnsignedInt("ff8ca87c", 16);
, который будет рассматривать значение какцелое число без знака.