Я написал функцию для преобразования строки в целое число
if ( data != null )
{
int theValue = Integer.parseInt( data.trim(), 16 );
return theValue;
}
else
return null;
У меня есть строка 6042076399, и я получил ошибки:
Exception in thread "main" java.lang.NumberFormatException: For input string: "6042076399"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:461)
Разве это не правильный способ преобразования строки в целое число?
Вот как я предпочитаю это делать:
Изменить (04.08.2015):
Как отмечено в комментарии ниже, на самом деле это лучше сделать так:
String numStr = "123";
int num = Integer.parseInt(numStr);
Это правильный метод, но ваше значение превышает максимальный размер int
.
Максимальный размер, который может содержать int
, составляет 2 31 - 1, или 2 147 483 647. Ваше значение - 6 042 076 399. Если вам нужен примитивный тип, его следует хранить как long
. Максимальное значение long значительно больше - 2 63 - 1. Другой вариант может быть BigInteger
.
Целое число
не может содержать это значение. 6042076399 (413424640921 в десятичной системе) больше 2147483647, максимальное целое число.
Попробуйте использовать Long.parseLong
.
Эта строка больше, чем Integer.MAX_VALUE. Вы не можете разобрать что-то, что выходит за пределы диапазона целых чисел. (я думаю, они доходят до 2 ^ 31-1).
В дополнение к тому, что ответили другие, если у вас есть строка из более чем 8 шестнадцатеричных цифр (но до 16 шестнадцатеричных цифр), вы можете преобразовать ее в длинный, используя Long .parseLong ()
вместо int с использованием Integer.parseInt ()
.