进制转换
不同进制之间可以通过10进制这一中间进制进行转换
base进制转换为10进制:数字的每一位乘10
10进制转为base进制:数字%base即为从小到大的每一位(短除法)
若base为负数,则在短除法时需要判断余数是否为负数,若为负数则
商++,余数-=base
int base_to_10(int base, string num)
{
int res = 0;
for (int i = 0; i < num.size(); i++)
{
if (isdigit(num[i]))
res = res * base + num[i] - '0';
else
res = res * base + num[i] - 'A' + 10;
}
return res;
}
string _10_to_base(int base, int num)
{
string res;
while (num)
{
int digit = num % base;
num /= base;
if (digit < 0)
{
digit -= base;
num++;
}
if (digit >= 10)
res += digit - 10 + 'A';
else
res += digit + '0';
}
reverse(res.begin(), res.end());
return res;
}