Java Ascii转换为整数

Java Ascii转换为整数,java,string,ascii,Java,String,Ascii,我对以下片段有一个问题: while (str.length() > i && str.charAt(i) >= '0' && str.charAt(i) <= '9') { result = result * 10 + (str.charAt(i) - '0'); i++; } while(str.length()>i&&str.charAt(i)>='0'&&str.charAt(i)通过执行str.charAt(i)-'0

我对以下片段有一个问题:

while (str.length() > i && str.charAt(i) >= '0' && str.charAt(i) <= '9') {
    result = result * 10 + (str.charAt(i) - '0');
    i++;
}
while(str.length()>i&&str.charAt(i)>='0'&&str.charAt(i)通过执行
str.charAt(i)-'0'
只需将字符转换为实数值,前提是字符在0..9范围内

result=result*10
的任务是将先前的结果“移位”到左边(十进制),因为检测到一个新的数字(并添加到结果中)

这段代码可能正在进行字符串到整数的转换,这也是一个糟糕的转换,因为非数字图表刚刚被跳过,
12AAA34
似乎会被转换为
1234
。如果在找到非数字字符后立即停止解析会更好,就像C
atoi
那样(仍然接受/跳过空格)

通过执行
Str.CharAt(i)-“0”
只需将字符转换为实数值,前提是字符的范围为0..9

result=result*10
的任务是将先前的结果“移位”到左边(十进制),因为检测到一个新的数字(并添加到结果中)


这段代码可能正在进行字符串到整数的转换,这也是一个糟糕的转换,因为非数字图表刚刚被跳过,
12AAA34
似乎会被转换为
1234
。如果在找到非数字字符后立即停止解析会更好,就像C
atoi
那样(仍然接受/跳过空格)首先考虑
Str.CharAt(i)-'0'
,因为
Str.CharAt(i)
'0'
都返回ascii值为整数的字符

这意味着取字符串<代码> STR < /代码>的值获取字符串的索引号<代码> i <代码>(<代码> STR )。例如,考虑这个字符串<代码>埃米尔< /代码>。 然后

“Emil”.CharAt(0);
会给我
E
。但是
E
的ascii值为
69
,这是一个整数。而且
0
的ascii值为
48
。因此
“Emil.CharAt(0);-0
相当于
69-48
(因此两个整数值的相减)并返回
21的整数

它(
Str.CharAt(i)-0
)被添加到
results*10
的结果中,因为
Str.CharAt(i)-0
返回一个在java中也可以识别为整数(ascii)的字符


请看一下还有asciito字符的表,让您了解更多。

首先考虑的是
Str.CharAt(i)-'0'
,因为
Str.CharAt(i)
'0'
都返回ascii值为整数的字符

这意味着取字符串<代码> STR < /代码>的值获取字符串的索引号<代码> i <代码>(<代码> STR )。例如,考虑这个字符串<代码>埃米尔< /代码>。 然后

“Emil”.CharAt(0);
会给我
E
。但是
E
的ascii值为
69
,这是一个整数。而且
0
的ascii值为
48
。因此
“Emil.CharAt(0);-0
相当于
69-48
(因此两个整数值的相减)并返回
21的整数

它(
Str.CharAt(i)-0
)被添加到
results*10
的结果中,因为
Str.CharAt(i)-0
返回一个在java中也可以识别为整数(ascii)的字符

请看一下哪个表也有ascii字符以使您了解更多。

可能重复的