编译器如何将整数转换为字符串,反之亦然

Tem*_*lar 8 string algorithm integer

许多语言都具有将字符串转换为整数的功能,反之亦然.那么那里发生了什么?转换期间正在执行什么算法?

我没有用特定的语言问,因为我认为它们应该在所有语言中都相似.

Mar*_*som 14

要将字符串转换为整数,请依次取每个字符,如果它在"0"到"9"范围内,则将其转换为十进制等效值.通常,这只是减去'0'的字符值.现在将任何先前的结果乘以10并添加新值.重复,直到没有数字为止.如果有一个前导' - '减号,则反转结果.

要将整数转换为字符串,请先将数字反转为负数.将整数除以10并保存余数.通过添加字符值'0'将余数转换为字符.将其推到字符串的开头; 现在重复您从分部获得的值.重复,直到分割值为零.如果数字开始为负数,则输出一个前导' - '减号.

以下是Python中的具体实现,在我看来,它是最接近伪代码的语言.

def string_to_int(s):
    i = 0
    sign = 1
    if s[0] == '-':
        sign = -1
        s = s[1:]
    for c in s:
        if not ('0' <= c <= '9'):
            raise ValueError
        i = 10 * i + ord(c) - ord('0')
    return sign * i

def int_to_string(i):
    s = ''
    sign = ''
    if i < 0:
        sign = '-'
        i = -i
    while True:
        remainder = i % 10
        i = i / 10
        s = chr(ord('0') + remainder) + s
        if i == 0:
            break
    return sign + s
Run Code Online (Sandbox Code Playgroud)