黑马程序员技术交流社区

标题: 这样的字符串 为什么无法用封装数据类型转成10进制? [打印本页]

作者: 惠晖    时间: 2012-12-10 16:14
标题: 这样的字符串 为什么无法用封装数据类型转成10进制?
本帖最后由 惠晖 于 2012-12-10 18:07 编辑

"1111111010100000000000000000000" 不管用parseInt 还是parseLong都会报运行异常NumberFormatException
作者: 翁鹏    时间: 2012-12-10 16:43
本帖最后由 翁鹏 于 2012-12-10 16:56 编辑

你自己的原因吧,看看你的代码是不是这种格式

int num = Integer.parseInt("111111010100000000000000000000", 2);
               
System.out.println(num);
我试了 我的可以。 结果为:1062207488
作者: 胡勇敏    时间: 2012-12-10 16:49
本帖最后由 huymd1234 于 2012-12-10 16:59 编辑

parseInt(String s)将字符串参数作为有符号的十进制整数进行解析,然后返回int型的值,而你给的这个字符串经过转化后产生的数字已经超过了int以及lang的取值范围所以会产生NumberFormatException。Integer.MAX_VALUE=2147483647 /Long.MAX_VALUE=9223372036854775807.你应该用parseInt(String s,int radix)方法,这个方法能指定你传的字符串参数是什么格式的参数如果是2进制的字符串radix就是2,如果是10进制的字符串radix就是10
作者: 但汉涛    时间: 2012-12-10 16:50
parseInt(string, radix)
当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
举例,如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

long的取值范围为-9223372036854775807 ~ 9223372036854775808

java.lang.NumberFormatException:当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。
作者: 惠晖    时间: 2012-12-10 17:47
本帖最后由 惠晖 于 2012-12-10 18:08 编辑
翁鹏 发表于 2012-12-10 16:43
你自己的原因吧,看看你的代码是不是这种格式

int num = Integer.parseInt("1111110101000000000000000000 ...


为什么后面写2呢  老师上的视频不是写10的么 或者默认不写的么
作者: 惠晖    时间: 2012-12-10 18:02
但汉涛 发表于 2012-12-10 16:50
parseInt(string, radix)
当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数 ...

你说的我也理解  我现在想把这个0x7f500000转成10进制 你能告诉我怎么做么
作者: 但汉涛    时间: 2012-12-10 18:52
惠晖 发表于 2012-12-10 18:02
你说的我也理解  我现在想把这个0x7f500000转成10进制 你能告诉我怎么做么
  1. class  test2
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String  str="0x7f500000";
  6.                 Long l = Long.parseLong(str.substring(2),16);   //substring返回一个新字符串,从第二个开始   
  7.                 System.out.println(l);
  8.         }
  9. }
复制代码
你试试吧,0x7f500000关键是把前面0x去掉,然后转化。。。
作者: 崔政    时间: 2012-12-11 15:55
哎,以前一直没留意Integer有一个这么叼的方法。。
以前不知道,让我死在26进制转10进制上了。悲剧啊。。{:soso_e109:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2