public class Test
{
    public static void main(String[] args)
    {
        String s = "7fffffff";
        int n = Integer.parseInt(s,16);
        System.out.println(s);
        System.out.println(n);
    }
}如果把字符串s中的7改为8,9,A--F。
怎么就抛出NumberFormatException异常呢?(0--7可以)
如果字符串s的长度小于8的话,前面可以是8,9……请问怎么回事?
谢谢 !

解决方案 »

  1.   

    7fffffff 是整数最大的数字了!Integer.MAX_VALUE再大就溢出了!
      

  2.   

           超过了 int 类型的最大值
           把n的类型 改成 long  就好了.
      

  3.   

    7fffffff 是Integer.MAX_VALUE 但是负数不行吗?
    一个int型32位,最高位符号位
    难道如果是负数的话需在前面加上“-”号吗?疑惑的是首先对于一个整数不知道是正还是负(从文本域中输入16进制字符串)
    然后转换成整数
    那这怎么办呢?谢谢!
      

  4.   

    过程中要用又怕溢出就如此long n = Long.parseLong(s,16);
      

  5.   

    谢谢大家了 问题解决了如果要转换成一个int型时 可以这样:
    int a = (int)Long.parseLong(str, 16);如果要转换成一个long型时,可以这样
    long lsb = Long.parseLong(str.subString(8,16), 16);
    long msb = Long.parseLong(str.subString(0,8), 16);
    long key = (msb << 32) + lsb;