`

Integer.parseInt(String s ,int radix)方法使用解释

 
阅读更多
方法parseInt(String s,int radix)的目的是输出一个十进制数,这个数字是“String s”但是我们要知道他是多少进制的,而方法中“int radix”参数正是来表达这个信息的。

比如:parseInt(1010,2)
意思就是:输出2进制数1010在十进制下的数.
更直白地说:parseInt(String s,int radix)就是求“int radix”进制数“String s”的十进制数是多少。

-----------------------

我们平时用到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 = 291
 
根据:Character.MIN_RADIX=2和Character.MAX_RADIX=36 则,parseInt(String s, int radix)参数中 
radix的范围是在2~36之间,超出范围会抛异常。其中s的长度也不能超出7,否则也会抛异常。 


源码如下:
public static int parseInt(String s, int radix)
		throws NumberFormatException
    {
        if (s == null) {
            throw new NumberFormatException("null");
        }

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

	if (radix > Character.MAX_RADIX) {
	    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;
	}
    }



网络摘录
分享到:
评论

相关推荐

    JAVA实用进制转换.pdf

    - **十六进制转十进制**:可以使用`Integer.valueOf(String s, int radix)`方法,其中`s`是十六进制字符串,`radix`是基数(这里是16)。例如: ```java String hexValue = "FFFF"; int decValue = Integer....

    JAVA实用进制转换

    如果想要直接从二进制、八进制或十六进制转换为十进制,可以使用`Integer.parseInt(String s, int radix)`方法。 - **使用`parseInt`进行转换**: - 示例:`Integer.parseInt("0101", 2)` 返回 `5` (二进制0101转换...

    java String 与各种进制字符之间的转换

    - `Integer.parseInt(String str, int radix)`: 这个方法用于将一个表示特定进制的字符串转换为整数。例如,`Integer.parseInt("1010", 2)`会返回十进制中的10,因为"1010"是二进制的10。 - `Long.parseLong...

    Integer类的使用方法

    System.out.println("Integer.parseInt(String s, int radix): " + Integer.parseInt(s1, 2)); ``` 在这个例子中,字符串"1010"是以二进制形式表示的数字10。 - **使用toString(int i, int radix)**:此方法用于...

    Java进制转换实现

    - `Integer.parseInt(String s, int radix)`:这个函数将一个表示特定进制的字符串转换为对应的十进制整数。例如,`Integer.parseInt("1010", 2)`会返回十进制数字10。 - `Long.parseLong(String s, int radix)`:...

    JAVA 进制转换全攻略.docx

    7. **`Integer.parseInt(String s, int radix)`方法**: 这个方法能够解析一个以指定基数表示的字符串,并返回对应的整数值。例如: ```java String binaryStr = "1010"; int decimal = Integer.parseInt...

    Java进制之间的转换

    此外,如果你想将其他进制的字符串转换为十进制整数,可以使用`Integer.parseInt(String s, int radix)`方法。`radix`参数表示输入字符串的基数。例如: ```java int decimal = Integer.parseInt("1010", 2); // 二...

    JAVA数据类型转换

    - `Integer.parseInt(String)` 或 `Integer.parseInt(String, int radix)` 这两个方法用于将字符串解析为整数。默认情况下,`parseInt()` 使用10进制,但第二个参数可以指定基数(2到36之间)。 - `Integer.value...

    java 进制转换

    `Integer.parseInt(String s, int radix)` 该方法用于解析一个字符串并将其按照指定的基数转换为整数。 - **示例**: ```java int decimalValue = Integer.parseInt("1100110", 2); // 结果为 102 ``` #### 三...

    src02 Integer

    8. **Integer.parseInt(String s, int radix)**: 这个静态方法解析给定的字符串`s`,根据指定的基数`radix`将其转换为对应的整数值。如果解析失败或基数不正确,它会抛出`NumberFormatException`。 9. **Integer...

    java类型转换IntegerStringLongFloatDoubleDate.doc

    第二个重载方法 `Integer.parseInt(String, int radix)` 允许指定基数(2-36),用于解析十六进制或其他进制的数字。 - 另一种方式是通过 `Integer.valueOf(String)` 创建一个 `Integer` 对象,然后调用 `intValue...

    java 包装类发给的发广告豆干

    另一个`parseInt(String s, int radix)`方法允许指定进制转换,例如: ```java int n = Integer.parseInt("120", 10); // 10进制转int,n = 120 int n = Integer.parseInt("12", 16); // 16进制转int,n = 18 ...

    java编写的数制转换器

    1. `Integer.parseInt(String s, int radix)`:这个静态方法将一个表示特定基数的字符串转换为对应的整数值。例如,`Integer.parseInt("1010", 2)`会将二进制数"1010"转换为十进制的10。 2. `Integer.toString(int ...

    用Java编写的数制转换

    - `Integer.parseInt(String s, int radix)`:将一个表示特定基数的字符串转换为十进制整数。 - `Integer.toString(int i, int radix)`:将十进制整数转换为指定基数的字符串。 - `Integer.toBinaryString(int i)...

    java进制转换大全

    要将二进制、八进制或十六进制的字符串转换为十进制的整数,可以使用`Integer.valueOf(String s, int radix)`方法,其中`radix`参数指定了输入字符串的基数。例如: - `Integer.valueOf("FFFF", 16).toString()`会...

    java中数据类型转换

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

Global site tag (gtag.js) - Google Analytics