进制转化是基础中的基础, 以下是任意进制转化模板, 依照计算机的加减法是在10进制的运算表下实现的, 靠十进制实现转化.
//任意进制转化十进制返回十进制数
int toDec(const char *p, int frombase)
{
int ans = 0;
while(*p)
{
ans *= frombase;
if(isdigit(*p)) ans += *p - '0';
if(isalpha(*p)) ans += *p - 'A' + 10;
p++;
}
return ans;
}
//在十进制的运算表下进行转化 (不包含0的情况, 若为零要预先判断)
void toAny(int t, int tobase)
{
if(t == 0) return;
toAny(t/tobase, tobase); //回溯直接逆序输出
printf("%c", (t%tobase >= 10 ? t%tobase + 'A' - 10 : t%tobase + '0')); //考虑大于10的情况
}