Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 整数。解码(字符串s)_Java - Fatal编程技术网

Java 整数。解码(字符串s)

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的二进制和前缀为0的八进制。
正确的方法是什么?

查看文档,我看不到二进制应该工作的迹象。不过,八进制应该可以工作,前缀仅为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;