2013-02-12 75 views
1

为什么当我们想要将一个数字的ASCII值转换为一个整数时,我们需要这样做:为什么数字字符的ASCII值等于值加'0'?

value - '0'

和周围的其他方式,向整数转换成ASCII码,我们需要做的:

value + '0' 

这是为什么?

+0

注意:两者都假定所讨论的整数在零(0)和九(9)之间。只有在这个范围内才是准确的。 – WhozCraig 2013-02-12 11:59:35

回答

8

因为数字字符的整数值由C标准保证是连续的。

因此'1' - '0' == 1'2' - '0' == 2等从中你可以推断出你的公式确实有效。

图片的标题说明:

  1. 因为这是标准的保证,它的工作原理,即使目标平台不使用ASCII。相反,如果标准没有强制要求(它不会对字母的值进行这样做),那么这种技术将不可移植;它将依赖于使用ASCII的目标系统。
+0

这是正确的答案,ASCII标准是无关紧要的。 C标准本身保证数字“0”到“9”是相邻的:这些是​​标准对任何形式保证的唯一字符。 – Lundin 2013-02-12 12:20:05

0

数字的ASCII值全部按顺序排列。所以0只是在ASCII代码点48处标记序列的开始,在位置57处继续到9

0

只是因为ASCII码为standard定义的数字的编码顺序(48..57)。

2

由于ASCII数字是一个接一个地编码的。

'0' == 48。然后'1' == 49,'2' == 50等等。

如果你仔细想想吧,'2' - '0' == 50 - 48 == 2。同样,2 + '0' == 2 + 48 == 50 == '2'

0

ASCII值是表中符号的位置编号。因此,您使用'0'符号位置号码作为数字符号的偏移量,向其添加整数数字值,您可以计算其位置号码。