Java 整数。解码(字符串s)
这不适用于前缀为0的二进制和前缀为0的八进制。Java 整数。解码(字符串s),java,Java,这不适用于前缀为0的二进制和前缀为0的八进制。 正确的方法是什么?查看文档,我看不到二进制应该工作的迹象。不过,八进制应该可以工作,前缀仅为0: class Test{ public static void main(String Args[]){ Integer x; x = Integer.decode("0b111"); System.out.println(x); } } 您可以像这样处理二进制指示符“0b”: Sys
正确的方法是什么?查看文档,我看不到二进制应该工作的迹象。不过,八进制应该可以工作,前缀仅为0:
class Test{
public static void main(String Args[]){
Integer x;
x = Integer.decode("0b111");
System.out.println(x);
}
}
您可以像这样处理二进制指示符“0b”:
System.out.println(Integer.decode("010")); // Prints 8
显示15的二进制、八进制、十进制和十六进制表示形式的完整示例代码:
int value = text.toLowerCase().startsWith("0b") ? Integer.parseInt(text.substring(2), 2)
: Integer.decode(text);
Integer.decode无法解析二进制文件,请参阅API。但是八进制工作很好,例如:
public class Test {
public static void main(String[] args) throws Exception {
String[] strings = { "0b1111", "017", "15", "0xf" };
for (String string : strings) {
System.out.println(decode(string)); // 15 every time
}
}
private static int decode(String text) {
return text.toLowerCase().startsWith("0b") ? Integer.parseInt(text.substring(2), 2)
: Integer.decode(text);
}
}
从Java7开始,您可以在代码中直接使用。但是,请注意,这些类型是字节
、短
、int
或长
(而不是字符串
)
@罗希贾因:没有。那是十六进制。读@JonSkeet。。糟糕。只是
0
。我搞错了。大约一年前,+1以RFE的形式记录了它。也许有一天会修好的
int i = Integer.decode("011");
int x = 0b111;