Почему следующий код не работает
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));
Если вы прочитаете документацию , то есть javado c из Integer.toOctalString(int i), вы найдете:
Integer.toOctalString(int i)
Возвращает строковое представление целочисленный аргумент в виде целого числа без знака в базе 8. [...] Значение аргумента может быть восстановлено из возвращенной строки s с помощью вызов Integer.parseUnsignedInt(s, 8).
Возвращает строковое представление целочисленный аргумент в виде целого числа без знака в базе 8.
[...]
Значение аргумента может быть восстановлено из возвращенной строки s с помощью вызов Integer.parseUnsignedInt(s, 8).
s
Integer.parseUnsignedInt(s, 8)
Javado c из Integer.toBinaryString(int i) и Integer.toHexString(int i) говорит в точности то же самое, кроме базы, конечно, отличается (2 и 16, соответственно).
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