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