0

我正在尝试从某个基数(2-9)转换为基数 10。必须完成的方式涉及字符串和整数之间的大量转换,因为该函数必须输出一个字符串,但它需要三个参数:要转换的数字、起始基数和结束基数。

无论如何,以下是我尝试将各种数字从以 2 为基数转换为以 10 为基数时得到的一些结果:

Number Result
11     2
100    4
101    4
110    4
111    4
1000   8
1001   8
1010   8
1011   8
1100   8

如您所见,出现了一些模式。它只是将第一个数字转换为以十为底,而忽略其余数字。我不太确定为什么会这样。这是执行此操作的代码:

char* baseConversion(int number, int inBase, int toBase)
{
    char tempString[20];

    if(number==0)
    {
        tempString[0] = 0;
        return tempString;
    }

    if(toBase == 10)
    {
        sprintf(tempString, "%d", number);
        char tempString2[] = {tempString[0]};
        int tempNumber = (atoi(tempString2)*((int)pow((float)inBase,(float)strlen(tempString)-1.0))+atoi(baseConversion(atoi(tempString+1), inBase, 10)));
        sprintf(tempString, "%d", tempNumber);
        return tempString;
    }
}

也许我的算法有问题,但我在纸上尝试过,它似乎有效。谢谢。

4

0 回答 0