`
辽东小小
  • 浏览: 200248 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
文章分类
社区版块
存档分类
最新评论

关于Integer的parseInt(String s, int radix)方法的使用

JDK 
阅读更多

最近看了一些别人写的java程序,其中就用到Integer.parseInt("23f34d",16);这个方法,当时很不解。

在网上搜了一下,才明白原来是这样的。

 

首先可以看一下jdk中 java.lang.Integer中的源码如下:

public static int parseInt(String s) throws NumberFormatException 
{
	return parseInt(s,10);
 }
 
    public static int parseInt(String s, int radix)throws NumberFormatException
    {
        if (s == null) {
            throw new NumberFormatException("null");
        }

	if (radix < Character.MIN_RADIX) {          //Character.MIN_RADIX=2
	    throw new NumberFormatException("radix " + radix +
					    " less than Character.MIN_RADIX");
	}

	if (radix > Character.MAX_RADIX) {          //Character.MAN_RADIX=36
	    throw new NumberFormatException("radix " + radix +
					    " greater than Character.MAX_RADIX");
	}

	int result = 0;
	boolean negative = false;
	int i = 0, max = s.length();
	int limit;
	int multmin;
	int digit;

	if (max > 0) {
	    if (s.charAt(0) == '-') {
		negative = true;
		limit = Integer.MIN_VALUE;
		i++;
	    } else {
		limit = -Integer.MAX_VALUE;
	    }
	    multmin = limit / radix;
	    if (i < max) {
		digit = Character.digit(s.charAt(i++),radix);
		if (digit < 0) {
		    throw NumberFormatException.forInputString(s);
		} else {
		    result = -digit;
		}
	    }
	    while (i < max) {
		// Accumulating negatively avoids surprises near MAX_VALUE
		digit = Character.digit(s.charAt(i++),radix);
		if (digit < 0) {
		    throw NumberFormatException.forInputString(s);
		}
		if (result < multmin) {
		    throw NumberFormatException.forInputString(s);
		}
		result *= radix;
		if (result < limit + digit) {
		    throw NumberFormatException.forInputString(s);
		}
		result -= digit;
	    }
	} else {
	    throw NumberFormatException.forInputString(s);
	}
	if (negative) {
	    if (i > 1) {
		return result;
	    } else {	/* Only got "-" */
		throw NumberFormatException.forInputString(s);
	    }
	} else {
	    return -result;
	}
    }

 

我们平时用到Integer.parseInt("123");其实默认是调用了int i =Integer.parseInt("123",10);
其中10代表的默认是10进制的,转换的过程可以看成:
                        
            i=  1*10*10+2*10+3
若是
               int i = Integer.parseInt("123",16);
即可以看成:
               i  = 1*16*16+2*16+3

根据:Character.MIN_RADIX=2和Character.MAX_RADIX=36 则,parseInt(String s, int radix)参数中
radix的范围是在2~36之间,超出范围会抛异常。其中s的长度也不能超出7,否则也会抛异常。
分享到:
评论
1 楼 huxiulei 2013-01-09  
radix的范围是在2~36之间,超出范围会抛异常。其中s的长度也不能超出7,否则也会抛异常。
'


其中s的长度也不能超出7是什么意思?
String bindString = "0000000011";
int bindInt = Integer.parseInt(bindString, 28);
System.out.println(bindString.length());
System.out.println(bindInt);
bindString 长度是十位   运行没有报错       这种算么? 求指点

相关推荐

    【JavaScript源代码】JavaScript parseInt()与Number()区别案例详解.docx

    parseInt(string,radix) 第二个参数表示使用的进制,我们一般使用10进制,也可能会有到8或者16进制。为了避免对“0”和“0x”开头的字符串解析错误,各种javascript编程规范都规定必须要明确给出第二个参数的值,...

    Go语言string,int,int64 ,float之间类型转换方法

    (1)int转string s := strconv.Itoa(i) 等价于s := strconv.FormatInt(int64(i), 10) (2)int64转string i := int64(123) s := strconv.FormatInt(i, 10) 第二个参数为基数,可选2~36 注:对于无符号整形,可以使用...

    parseInt—解析字符串

    是Javascript内置函数,原型为parseInt ( String s , [ int radix ] ),用于解析一个字符串,并返回一个整数。 使用 parseInt(string, radix) 参数 描述 string 必需。要被解析的字符串。 radix 可选。...

    js中string转int把String类型转化成int类型

    首先给大家分享一篇 js中int和string数据类型互相转化实例 ...今天做项目的时候,碰到一个问题,需要把String类型的变量转化成int类型的。...备注:无论是 Java 还是 JavaScript, parseInt 方法都有两

    timesten jdbc

    int init = Integer.parseInt(sInit); int maxStmts = Integer.parseInt(sMaxStmts); ds.setMaxPoolSize(max); ds.setMinPoolSize(min); ds.setInitialPoolSize(init); ds.setMaxStatements(maxStmts); }

    import java.io.*; public class FirstPart{ public static void main(String[] args) throws Exception{ System.out.print("The input Fahrenheit is "); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int f = Integer.parseInt(br.re

    import java.io.*; public class FirstPart{ public static void main(String[] ...int f = Integer.parseInt(br.readLine()); double c=5*(f-32); c=c/9; System.out.println("Changing it to Celsius is "+c); } }

    java中long类型转换为int类型-java long转int.pdf

    long转int 由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出...int ii = Integer.parseInt(String.valueOf(ll)); 这三种方法都比较简单明了。

    js string 转 int 注意的问题小结

    var str=’1250′ ; alert&#40; Number(str&#41; ); //得到1250 alert&#40;... //得到64 发现parseInt方法在format’00’开头的数字时会当作2进制转10进制的方法进行转换,所以建议string转int最好用Number方法

    java中数据类型转换

    java中数据类型转换 收藏 java中数据类型转换 ...i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异.

    JavaScript用Number方法实现string转int

    代码如下: var str=’1250′ ; alert&#40; Number(str&#41; );... //得到64 发现parseInt方法在format’00’开头的数字时会当作2进制转10进制的方法进行转换,所以建议string转int最好用Number方法

    java哈夫曼压缩

    n=Integer.parseInt(s); System.out.print("input"+s+"numbers"); for(i=0;i;i++){ s=in.readLine(); value[0][i]=i; value[1][i]=Integer.parseInt(s); valueNode[0][i]=i; valueNode[1][i]=Integer....

    java常用方法大全

    int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...

    java字符串操作大全

    //Integer.parseInt(s, radix) radix设置为10,表示10进制,16表示16进制啦 int i = Integer.parseInt(a, 16); 1、length() 字符串的长度  例:char chars[]={'a','b'.'c'};  String s=new String(chars); ...

    Javascript中parseInt的正确使用方式

    parseInt(string, radix) 当参数radix的值为 0,或没有设置该参数时,parseInt()会根据 string来判断数字的基数。 返回值 返回解析后的数字。 提示和注释 注释:只有字符串中的第一个数字会被返回。 注释:开头和...

    Java常用方法大全

    int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...

    js中int和string数据类型互相转化实例

    在javascript里怎么样才能把int型转换成string型 (1) var x=100 a = x.toString() (2) var x=100; a = x +""; //JS会自动隐性转换 javascript 将string 变成 int JScript var s = "32" var i = new Number...

    javaScript parseInt字符转化为数字函数使用小结

    今天测的时候发现问题了,当数据库中... 首先看parseInt语法:parseInt(string, radix); 如果后面参数没写就以第一个的开头判断其中string为要转换的字符串,radix为二进制,八进制,十六进制或十进制。 在默认不指定ra

    java函数大全

    int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...

    Java 用法明细介绍

    int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...

Global site tag (gtag.js) - Google Analytics