исключение числового формата при попытке анализа строки - PullRequest
0 голосов
/ 14 января 2019

Я хочу преобразовать Integer.MAX_VALUE в двоичный файл и хочу, чтобы представление имело тип int. Я передал это Integer.tobinarystring() и обернул это Integer.parseint, но я получил число для исключения.

Вот код

System.out.println(
    Integer.parseInt(
            Integer.toBinaryString(Integer.MAX_VALUE)
    )
);

Вот исключение

Exception in thread "main" java.lang.NumberFormatException: For input string: "1111111111111111111111111111111"

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Если вы хотите получить целочисленное значение двоичной строки

1111111111111111111111111111111

Вы должны использовать другую сигнатуру parseInt(), которая принимает в качестве второго параметра radix,
, в этом случае двоичной строки основание равно 2

String str = Integer.toBinaryString(Integer.MAX_VALUE);
int number = Integer.parseInt(str, 2);
System.out.println(number);

будет напечатано:

2147483647
0 голосов
/ 14 января 2019

Integer.MAX_VALUE составляет 2 147 483 647

В двоичном виде это: 1111111111111111111111111111111

Если мы снова будем рассматривать это как целое число, равное 1,111,111,111,111,111,111,111,111,111,111, вы, вероятно, увидите, что оно намного больше максимального значения.

Возможно, вы захотите заглянуть в BigInteger, если вам действительно нужно иметь дело с этим как с целым числом.

...