数字格式异常整数类java

数字格式异常整数类java,java,logic,syntax-error,Java,Logic,Syntax Error,真正简单的问题是代码: public class BlankClass { public static void main(String []args) { String string1 = new String("ABCD1234"); int i = Integer.parseInt(string1); System.out.println(i); } } 以下是错误: Exception in thread "ma

真正简单的问题是代码:

public class BlankClass
{

    public static void main(String []args)
    {
        String string1 = new String("ABCD1234");
        int i = Integer.parseInt(string1);
        System.out.println(i);
    }
}
以下是错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "ABCD1234"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at HelloWorld.main(HelloWorld.java:7)

ABCD1234应等于基数10中的2882343476,其小于2^32 4294967296:\

但在这种情况下:

public class BlankClass
{
    public static void main(String []args)
    {
        System.out.println(2882343476);
        System.out.println(Math.pow(2, 32));
    }
}
以下是给出的错误:

BlankClass.java:6: error: integer number too large: 2882343476
    System.out.println(2882343476);
                       ^
1 error
这是因为“ABCD1234”大于Integer.MAX_VALUE,而且您没有以十六进制的方式对其进行解析。 以下代码起作用:

String string1 = new String("ABCD1234");
System.out.println(Long.parseLong(string1, 16));

如果要分析十六进制数,需要指定基数:

String string1 = new String("ABCD");
int i = Integer.parseInt(string1, 16);
但无论如何,您都需要使用长时间:

2882343476 0xABCD1234
2147483647 Integer.MAX
这就是你的代码:

String string1 = new String("ABCD1234");
long i = Long.parseLong(string1, 16);

请参阅。

您的问题是什么?“ABCD1234应等于2882343476”-以何种方式?是什么让你认为
Integer.parseInt
接受十六进制输入?文件上是这么说的吗?是什么让你认为
int
在2^32之前是有效的?(提示:如何表示负数?)-1在询问之前,您应该阅读文档或搜索,int)