进制转换

不同进制之间可以通过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;
}