2011-08-19 33 views

回答

13

将字符串转换为整数,采取依次在每个字符,如果它通过“9”的范围为“0”,将其转换为相应的十进制数。通常这只是减去'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') 
    i *= sign 
    return 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 
    s = sign + s 
    return s 
+0

这不是“十进制等值” - 它将数字转换为数字。 –

1

我不会称之为算法本身,但取决于语言,它将涉及将字符转换为其整数等价物。许多语言要么停止,不能表示为一个整数(例如信a)的第一个字符,会盲目的所有字符转换成它们的ASCII值(例如信a变得97),或将忽略不能被表示为字符整数,只能转换那些可以 - 或返回0 /空。您必须更详细地了解框架/语言以提供更多信息。

1

字符串到整数:

许多(最)语言表示字符串,在一定程度上或另一种,如字符,这也是短整​​数数组(或列表)。将与数字字符对应的字符映射到其数字值。例如,ascii中的'0'由48表示。因此,您将48映射到0,49到1等等到9.

从左侧开始,您将当前总数乘以10,然后添加下一个角色的价值,并继续前进。 (你可以制作更大或更小的地图,改变你在每一步所乘的数字,然后转换你喜欢的任何基地的字符串。)

整数到字符串是一个较长的过程,涉及基地转换为10.我想,因为大多数整数的位数都是有限的(通常是32或64),所以你知道在一个字符串(20?)中它最多会达到一定数量的字符。所以你可以设置你自己的加法器,并在计算它的值(2^place)之后遍历每个位的每个位。

相关问题