java .lang.NumberFormatException.forInputString - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь преобразовать свою двоичную строку в десятичное значение, но получаю ошибку. Двоичная строка состоит из 32 бита, поэтому переполнения нет.

String s = "11111111111111111111111111111101";
System.out.print(s.length());
System.out.print(Integer.parseInt(s,2));

Исключение: -

Exception in thread "main" java.lang.NumberFormatException: For input string: "11111111111111111111111111111101"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:583)

Ответы [ 2 ]

1 голос
/ 12 июля 2020

Первый бит равен 1, поэтому это число не может быть представлено как положительное целое число. Если вы попытаетесь, он «переполнится» и станет отрицательным.

Если это то, что вы хотите, вы можете проанализировать строку как беззнаковое значение :

System.out.print(Integer.parseUnsignedInt(s,2));

Выход: -3

0 голосов
/ 12 июля 2020
Тип

Integer невелик, как вы ожидали, вместо этого попробуйте использовать BigInteger:

new BigInteger(s, 2)

Вывод

324294967293
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...