C++十进制与任意进制之间的相互转换(2-36进制)
程序员文章站
2024-03-18 18:46:22
...
十进制转换为任意进制
其实就相当于把10进制转换2进制的方法套用一下,如果小于10的话直接显示,如果大于10做字符上的处理。
string change_r(long long n, int r)
{
if (n == 0)
{
return "0";
}
string ans;
while (n)
{
if (n % r < 10)
ans += (n % r) + '0';
else
{
ans += (n % r) - 10 + 'A';
}
n /= r;
}
reverse(ans.begin(), ans.end());
return ans;
}
任意进制转换为10进制
首先对高位×r,然后加上下一位,加上后继续×r。(循环)
一个实例:1234(原本10进制),转换为10进制
ans=0×10+1=1
ans=1×10+2=12
ans=12×10+3=123
ans=123×10+4=1234
利用这个方法,就可以得到字符串转换为10进制。
long long change_10(string num, int r)
{
long long ans = 0;
int len = num.length();
for (int i = 0; i < len; i++)
{
if (num[i] >= '0' && num[i] <= '9')
ans = ans * r + num[i] - '0';
else
{
ans = ans * r + num[i] - 'A' + 10;
}
}
return ans;
}
上一篇: JS实现十进制与二进制之间的转换