最近看了一些别人写的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,否则也会抛异常。
分享到:
相关推荐
parseInt(string,radix) 第二个参数表示使用的进制,我们一般使用10进制,也可能会有到8或者16进制。为了避免对“0”和“0x”开头的字符串解析错误,各种javascript编程规范都规定必须要明确给出第二个参数的值,...
(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 注:对于无符号整形,可以使用...
是Javascript内置函数,原型为parseInt ( String s , [ int radix ] ),用于解析一个字符串,并返回一个整数。 使用 parseInt(string, radix) 参数 描述 string 必需。要被解析的字符串。 radix 可选。...
首先给大家分享一篇 js中int和string数据类型互相转化实例 ...今天做项目的时候,碰到一个问题,需要把String类型的变量转化成int类型的。...备注:无论是 Java 还是 JavaScript, parseInt 方法都有两
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[] ...int f = Integer.parseInt(br.readLine()); double c=5*(f-32); c=c/9; System.out.println("Changing it to Celsius is "+c); } }
long转int 由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出...int ii = Integer.parseInt(String.valueOf(ll)); 这三种方法都比较简单明了。
var str=’1250′ ; alert( Number(str) ); //得到1250 alert(... //得到64 发现parseInt方法在format’00’开头的数字时会当作2进制转10进制的方法进行转换,所以建议string转int最好用Number方法
java中数据类型转换 收藏 java中数据类型转换 ...i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异.
代码如下: var str=’1250′ ; alert( Number(str) );... //得到64 发现parseInt方法在format’00’开头的数字时会当作2进制转10进制的方法进行转换,所以建议string转int最好用Number方法
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....
int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...
//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); ...
parseInt(string, radix) 当参数radix的值为 0,或没有设置该参数时,parseInt()会根据 string来判断数字的基数。 返回值 返回解析后的数字。 提示和注释 注释:只有字符串中的第一个数字会被返回。 注释:开头和...
int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...
在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...
今天测的时候发现问题了,当数据库中... 首先看parseInt语法:parseInt(string, radix); 如果后面参数没写就以第一个的开头判断其中string为要转换的字符串,radix为二进制,八进制,十六进制或十进制。 在默认不指定ra
int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...
int型 Integer.parseInt(字符串) long型 Long.parseLong(字符串) float型 Folat.valueOf(字符串).floatValue() double型 Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符...