最近看了一些别人写的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,否则也会抛异常。
分享到:
相关推荐
System.out.println("Integer.parseInt(String s, int radix): " + Integer.parseInt(s1, 2)); ``` 在这个例子中,字符串"1010"是以二进制形式表示的数字10。 - **使用toString(int i, int radix)**:此方法用于...
- `Integer.parseInt(String str, int radix)`: 这个方法用于将一个表示特定进制的字符串转换为整数。例如,`Integer.parseInt("1010", 2)`会返回十进制中的10,因为"1010"是二进制的10。 - `Long.parseLong...
7. **`Integer.parseInt(String s, int radix)`方法**: 这个方法能够解析一个以指定基数表示的字符串,并返回对应的整数值。例如: ```java String binaryStr = "1010"; int decimal = Integer.parseInt...
- **十六进制转十进制**:可以使用`Integer.valueOf(String s, int radix)`方法,其中`s`是十六进制字符串,`radix`是基数(这里是16)。例如: ```java String hexValue = "FFFF"; int decValue = Integer....
* parseInt(String s, int radix):以radix为基数返回s的十进制数。 * shortValue():返回该整型数所表示的短整数。 * toBinaryString(int i):将整数转为二进制数的字符串。 * toHexString(int i):将整数转为十六...
8. **Integer.parseInt(String s, int radix)**: 这个静态方法解析给定的字符串`s`,根据指定的基数`radix`将其转换为对应的整数值。如果解析失败或基数不正确,它会抛出`NumberFormatException`。 9. **Integer...
- `Integer.parseInt(String s, int radix)`:这个函数将一个表示特定进制的字符串转换为对应的十进制整数。例如,`Integer.parseInt("1010", 2)`会返回十进制数字10。 - `Long.parseLong(String s, int radix)`:...
要将二进制、八进制或十六进制的字符串转换为十进制的整数,可以使用`Integer.valueOf(String s, int radix)`方法,其中`radix`参数指定了输入字符串的基数。例如: - `Integer.valueOf("FFFF", 16).toString()`会...
如果想要直接从二进制、八进制或十六进制转换为十进制,可以使用`Integer.parseInt(String s, int radix)`方法。 - **使用`parseInt`进行转换**: - 示例:`Integer.parseInt("0101", 2)` 返回 `5` (二进制0101转换...
另一个`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 ...
- `Integer.parseInt(String)` 或 `Integer.parseInt(String, int radix)` 这两个方法用于将字符串解析为整数。默认情况下,`parseInt()` 使用10进制,但第二个参数可以指定基数(2到36之间)。 - `Integer.value...
此外,如果你想将其他进制的字符串转换为十进制整数,可以使用`Integer.parseInt(String s, int radix)`方法。`radix`参数表示输入字符串的基数。例如: ```java int decimal = Integer.parseInt("1010", 2); // 二...
第二个重载方法 `Integer.parseInt(String, int radix)` 允许指定基数(2-36),用于解析十六进制或其他进制的数字。 - 另一种方式是通过 `Integer.valueOf(String)` 创建一个 `Integer` 对象,然后调用 `intValue...
- `parseInt(String s, int radix)`:以指定基数解析字符串为整数。 - `shortValue()`:将 Integer 对象转换为 short 类型的值。 - `toBinaryString(int i)`:将整数转换为二进制字符串。 - `toHexString(int i)...
`Integer.parseInt(String s, int radix)` 该方法用于解析一个字符串并将其按照指定的基数转换为整数。 - **示例**: ```java int decimalValue = Integer.parseInt("1100110", 2); // 结果为 102 ``` #### 三...
Integer类的构造方法只有两个:public Integer(int value)和public Integer(String s) throws NumberFormatException。其中,第二个构造方法传入一个字符串,然后调用parseInt方法将其转换成整数。 parseInt方法是...