Почему Integer.valueOf не может разобрать шестнадцатеричную строку обратно в целое число - PullRequest
0 голосов
/ 24 апреля 2020

Почему следующий код не работает

System.out.println(Integer.valueOf(Integer.toOctalString(-1), 8));
System.out.println(Integer.valueOf(Integer.toBinaryString(-1), 2));
System.out.println(Integer.valueOf(Integer.toHexString(-1), 16));

1 Ответ

0 голосов
/ 24 апреля 2020

Если вы прочитаете документацию , то есть javado c из Integer.toOctalString(int i), вы найдете:

Возвращает строковое представление целочисленный аргумент в виде целого числа без знака в базе 8.

[...]

Значение аргумента может быть восстановлено из возвращенной строки s с помощью вызов Integer.parseUnsignedInt(s, 8).

Javado c из Integer.toBinaryString(int i) и Integer.toHexString(int i) говорит в точности то же самое, кроме базы, конечно, отличается (2 и 16, соответственно).

System.out.println(Integer.parseUnsignedInt(Integer.toOctalString(-1), 8));
System.out.println(Integer.parseUnsignedInt(Integer.toBinaryString(-1), 2));
System.out.println(Integer.parseUnsignedInt(Integer.toHexString(-1), 16));

Выход

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