为什么这种基本转换算法失败了?

时间:2014-10-23 22:54:17

标签: c recursion converter base base-conversion

我正在尝试从一些基数(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;
    }
}

也许我的算法出了问题,但我在纸上试了一下它似乎有效。感谢。

0 个答案:

没有答案