Ascii到整数

时间:2016-12-10 22:11:00

标签: java string ascii

我对以下代码段有疑问:

str.charAt(i) - '0'

有人可以告诉我为什么会考虑var text=svg.selectAll('.legend') .data(pie(dataset)) .enter() .append("text") .attr('class','legend') .attr("transform", function(d) { return "translate(" + labelArc.centroid(d) + ")"; }) .attr("dy", "20px") ,它会做什么? 另外,为什么结果乘以10?

谢谢!

2 个答案:

答案 0 :(得分:0)

通过执行Str.CharAt(i) -'0',只需将字符转换为实数值,前提是该字符位于0 .. 9范围内。

result = result * 10事情是"转移"之前的结果是左(十进制基数),因为检测到了一个新数字(并添加到结果中)

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

答案 1 :(得分:0)

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

这意味着获取字符串Str的值将获取字符串(i)的索引号Str处的字符。例如,考虑这个字符串Emil。 然后"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)。

查看this stackoverflow page,其中还有 ascii 字符表,以便您了解更多信息。