5

为什么当我们想将一个数字的 ASCII 值转换为整数时,我们需要这样做:

value - '0'?

反过来,要将 Integer 转换为 ASCII,我们需要这样做:

value + '0'

这是为什么?

4

5 回答 5

11

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

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

旁注:

  1. 由于这是由标准保证的,因此即使目标平台不使用 ASCII 也能正常工作。
  2. 相反,如果标准没有强制要求(它没有对字母的值这样做),那么这种技术将不具有可移植性;它将取决于使用 ASCII 的目标系统。
于 2013-02-12T11:40:38.320 回答
3

因为ASCII数字因此一个接一个地被编码。

'0' == 48。然后'1' == 49'2' == 50以此类推。

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

于 2013-02-12T11:41:50.290 回答
0

数字的ASCII值都是按顺序排列的。所以0只需在 ASCII 码点标记序列的开始48,一直到9位置57

于 2013-02-12T11:40:02.820 回答
0

仅仅因为 ASCII标准定义的数字代码是按顺序排列的 (48 .. 57) 。

于 2013-02-12T11:40:11.143 回答
0

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

于 2013-02-12T11:42:32.900 回答