我正在尝试从一些基数(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;
}
}
也许我的算法出了问题,但我在纸上试了一下它似乎有效。感谢。