Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 编译器如何将整数转换为字符串,反之亦然_String_Algorithm_Integer - Fatal编程技术网

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'这不是“其十进制等价物”-它将数字字符转换为数字。