题目:编写程序,其中使用函数base完成以下功能:将输入的一个base(取值2到16)进制正整数转换为十进制数输出。整数base和要转换的以字符串str表示的base进制数由键盘输入。如,输入16 2A则表示输入16进制数2A,程序将输出十进制整数42;输入3 211则输出22。
这是答案:
int base(int k, char s[])
{
int len=0,sum=0;
int i,j,t,n;
while (s[len]!='\0') len++;
i=len-1;
while (s[i]!='\0')
{
n=0;
if (s[i]>='0'&&s[i]<='9')
n=s[i]-48;
else if (s[i]>='A'&&s[i]<='F')
n=10+s[i]-'A';
t=1;
for (j=0; j<len-i-1; j++) t=t*k;
sum += n*t;
i--;
}
return (sum);
}
main()
{
int sz;
char str[20];
scanf("%d %s",&sz,str);
if (sz<2||sz>16)
printf("输入错误。\n");
else
printf("%d\n",base(sz,str));
}
但是我看不懂呀,大佬能帮我写好详细注释吗?就比如这些进制转化的方法是怎样的?我真的不懂进制要怎样转化。