【问题标题】:Why the ASCII value of a digit character is equal to the value plus '0'?为什么数字字符的 ASCII 值等于该值加上“0”?
【发布时间】:2013-02-12 11:37:14
【问题描述】:

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

value - '0'?

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

value + '0'

这是为什么呢?

【问题讨论】:

  • 注意:两者都假设所讨论的整数介于零 (0) 和九 (9) 之间。只有在这个范围内才是准确的。
  • ASCII 无关紧要:这种转换也适用于可移植的 C 代码。

标签: c ascii


【解决方案1】:

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

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

如果你考虑一下,'2' - '0' == 50 - 48 == 2。同样,2 + '0' == 2 + 48 == 50 == '2'

【讨论】:

    【解决方案2】:

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

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

    旁注:

    1. 由于这是由标准保证的,因此即使目标平台不使用 ASCII 也能正常工作。
    2. 相反,如果标准没有强制执行此操作(它没有对字母的值执行此操作),则此技术将不可移植;它将取决于使用 ASCII 的目标系统。

    【讨论】:

    • 这是正确答案,ASCII 标准无关紧要。 C 标准本身保证数字 '0' 到 '9' 是相邻的:这些是​​标准保证任何形式的唯一字符。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        ASCII 值是一个符号在表中的位置编号。所以你用'0'符号位置号作为数字符号的偏移量,加上一个整数数字值就可以计算出它的位置号。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-14
          • 1970-01-01
          • 1970-01-01
          • 2018-03-29
          • 2012-12-07
          • 1970-01-01
          • 2018-09-30
          相关资源
          最近更新 更多