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
。如果在找到非数字字符后立即停止解析会更好,就像Catoi
那样(仍然接受/跳过空格)通过执行Str.CharAt(i)-“0”
只需将字符转换为实数值,前提是字符的范围为0..9
result=result*10
的任务是将先前的结果“移位”到左边(十进制),因为检测到一个新的数字(并添加到结果中)
这段代码可能正在进行字符串到整数的转换,这也是一个糟糕的转换,因为非数字图表刚刚被跳过,12AAA34
似乎会被转换为1234
。如果在找到非数字字符后立即停止解析会更好,就像Catoi
那样(仍然接受/跳过空格)首先考虑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到字符以使您了解更多。可能重复的