十进制转化为任意进制,短除法
char get(int x)
{
if(x<=9) return x+'0';
return x-10+'A';
}
string base(int n,int b)//n为输入整数,b为要转化的进制
{
string num;
while(n) //将十进制转化为b进制
{
num +=get(n % b); // 将求得的数转化为字符并加入到字符串中
n/=b;
}
reverse(num.begin(),num.end()); //将字符串倒序
return num;
}
任意进制转为为十进制,秦九韶算法
int uget(char c)
{
if(c <='9') return c-'0';
return c-'A'+10;
}
int base(string num,int b)
{
int res=0;
int len=num.size();
for(int c=len-1;c>=0;c--)
{
res=res*b+uget(num[c]);
}
return res;
}
其它进制化为其它进制
1.用十进制过渡
2.用短除法
[124. 数的进制转换] https://www.acwing.com/problem/content/126/
8转10的顺序错了