可以先将 M 进制数转十进制数,再将十进制数转 N 进制数
//
// 字符转数字
//////////////////////////////////////////////////////////////////////////
int CharToInt(const char num_char)
{
switch (num_char)
{
case '0':
return 0;
break;
case '1':
return 1;
break;
case '2':
return 2;
break;
case '3':
return 3;
break;
case '4':
return 4;
break;
case '5':
return 5;
break;
case '6':
return 6;
break;
case '7':
return 7;
break;
case '8':
return 8;
break;
case '9':
return 9;
break;
case 'A':
return 10;
break;
case 'B':
return 11;
break;
case 'C':
return 12;
break;
case 'D':
return 13;
break;
case 'E':
return 14;
break;
case 'F':
return 15;
break;
default:
return 0;
break;
}
}
//
// 其它进制数转十进制数
//////////////////////////////////////////////////////////////////////////
int OtherToDec(const char *num_str, unsigned int N)
{
int num = 0;
const char *p = num_str;
int cnt = strlen(num_str);
while (*p != '/0')
{
num += pow((float)N, --cnt) * CharToInt(*p);
p++;
}
return num;
}
//
// M 进制数转 N 进制数
//////////////////////////////////////////////////////////////////////////
void MToN(const char *num_str, unsigned int M, unsigned int N)
{
DecToOther(OtherToDec(num_str, M), N);
}
int main(void)
{
MToN("123", 16, 7);
return 0;
}