Java 为什么Integer.valueOf无法将十六进制字符串解析回整数

Java 为什么Integer.valueOf无法将十六进制字符串解析回整数,java,hex,Java,Hex,为什么下面的代码不起作用 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)); 如果您阅读文档,即的javadoc,您将发现: 返回整型参数的字符串表

为什么下面的代码不起作用

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));
如果您阅读文档,即的javadoc,您将发现:

返回整型参数的字符串表示形式,该表示形式为基数为8的无符号整数

[……]

参数的值可以通过调用从返回的字符串中恢复

和的Javadoc表示完全相同的事情,只是基数当然分别不同于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
@码标不正确。您可以使用Integer.parseUnsignedInt