исключение java.lang.NumberFormatException: Для входной строки: «A3ADF30029011F»

#java #binary

Вопрос:

Я пытаюсь преобразовать шестнадцатеричное число в десятичное и в двоичное, но получаю ту же ошибку для данного шестнадцатеричного "001F012900F3ADA3" числа, но одно и то же шестнадцатеричное число преобразуется в десятичное и в двоичное с помощью любого онлайн-конвертера.

 Integer.parseInt("001F012900F3ADA3",16); // to decimal conversion  Integer.toBinaryString(Integer.parseInt("001F012900F3ADA3", 16)); // to binary conversion  

когда я использую часть этого шестнадцатеричного кода, как Integer.parseInt("00F3ADA3",16); это работает нормально, без исключений. есть ли какой-то тип максимальной шестнадцатеричной длины, разрешенной для преобразования, или я использую что-то не так, пожалуйста, исправьте меня.

Ответ №1:

Значение, которое вы пытаетесь проанализировать, слишком велико, чтобы поместиться в целое число. Чтобы проанализировать это должным образом, вам придется анализировать это так долго.

Если вы замените его на ниже, то он будет работать.

 Long.toBinaryString(Long.parseLong("001F012900F3ADA3", 16));  

Ответ №2:

Максимальное значение int равно 2147483647 , значение : 001F012900F3ADA3 преобразовать в двоичное число равно 8726999899286947 .