数字尤其是十进制数字的内部解析是如何工作的?

How does the internally parsing of numbers and especially decimal numbers work?

如何在内部将字符串解析为数字格式?我想象过这样的事情。这与实际实施相符吗?

(与任何特定的编程语言无关)

int getDigit(char c)
{
    if (c == '0')
        return 0;
    if (c == '1')
       return 1;
    if (c == '2')
       return 2;
    // ...
}

int parseInt(string str)
{
    int result = 0;

    for (int i = 0; i < strlength(str); i++)
        result = result * 10 + getDigit(str[i]);

    return result;
}

您首先获取每个数字值,然后乘以 10 的实现是一种常见的实现方式。例如,this one from MS,与您的实现基本相同。

在大多数语言中,您可以通过从输入字符中减去字符 '0' 来获得整数值,因为文本编码的工作方式。