String 编译器如何将整数转换为字符串,反之亦然
许多语言都有将字符串转换为整数的函数,反之亦然。那么那里发生了什么?转换期间执行的是什么算法String 编译器如何将整数转换为字符串,反之亦然,string,algorithm,integer,String,Algorithm,Integer,许多语言都有将字符串转换为整数的函数,反之亦然。那么那里发生了什么?转换期间执行的是什么算法 我不会用特定的语言提问,因为我认为它们应该是相似的。我不会把它本身称为一种算法,但根据语言的不同,它会涉及到将字符转换为其整数等价物。许多语言要么停止在不能表示为整数的第一个字符上(例如字母a),要么盲目地将所有字符转换为ASCII值(例如字母a变成97),或将忽略不能表示为整数的字符,而只转换可以-或返回0/空的字符。您必须更具体地了解框架/语言以提供更多信息。字符串到整数: 许多(大多数)语言在某种
我不会用特定的语言提问,因为我认为它们应该是相似的。我不会把它本身称为一种算法,但根据语言的不同,它会涉及到将字符转换为其整数等价物。许多语言要么停止在不能表示为整数的第一个字符上(例如字母
a
),要么盲目地将所有字符转换为ASCII值(例如字母a
变成97
),或将忽略不能表示为整数的字符,而只转换可以-或返回0/空的字符。您必须更具体地了解框架/语言以提供更多信息。字符串到整数:
许多(大多数)语言在某种程度上将字符串表示为字符数组(或列表),这些字符也是短整数。将与数字字符对应的字符映射到其数字值。例如,ascii中的“0”由48表示。所以你把48映射到0,49映射到1,依此类推到9
从左边开始,将当前总数乘以10,再加上下一个角色的值,然后继续。(您可以制作更大或更小的贴图,更改在每个步骤中乘以的数字,并转换任意基的字符串。)
整数到字符串是一个较长的过程,需要将基数转换为10。我想,由于大多数整数都有有限的位(通常是32位或64位),您知道它在一个字符串中最多只能包含一定数量的字符(20?)。因此,您可以设置自己的加法器,并在计算每个位的值(2^位)后对每个位进行迭代。要将字符串转换为整数,请依次获取每个字符,如果它在“0”到“9”范围内,请将其转换为十进制等效值。通常这只是减去字符值“0”。现在将之前的结果乘以10,再加上新的值。重复此操作,直到没有剩余数字。如果有一个前导的“-”减号,则反转结果 若要将整数转换为字符串,请先反转负数。将整数除以10并保存余数。通过添加字符值“0”将余数转换为字符。将其推到字符串的开头;现在用从除法中获得的值重复。重复此操作,直到除以的值为零。如果数字开头是负数,请在前面加一个“-”减号 这里是Python的具体实现,我认为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
def字符串到整数:
i=0
符号=1
如果s[0]='-':
符号=-1
s=s[1:]
对于s中的c:
如果不是('0'这不是“其十进制等价物”-它将数字字符转换为数字。