许多语言都具有将字符串转换为整数(反之亦然)的功能。那么那里发生了什么?转换期间正在执行什么算法?
我不要求使用特定语言,因为我认为所有语言都应该相似。
要将字符串转换为整数,请依次转换每个字符,如果它在‘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