进制转换
作者:
弥海砂
,
2024-11-16 10:17:55
,
所有人可见
,
阅读 2
int get(string num,int b) //将b进制的数num转换成十进制数(2<=b<=9)
{
int res=0;
for(auto c:num)
res=res*b+c-'0';
return res;
}
int get(string num,int b) //将b进制数转换成十进制数 (2<=b<=62)
{
int res=0;
for(auto c:num)
{
int digit;
//字符转换为数字👇
if(c>='0' && c<='9') //'0'-'9'表示数字0-9
digit=c-'0';
else if(c>='A' && c<='Z') //'A'-'Z'表示数字10-35
digit=c-'A'+10;
else
digit=c-'a'+36; //'a'-'z'表示数字36-61
res=res*b+digit; //秦九韶算法核心
}
return res;
}
string get(int num, int b) //将十进制数num转换成b进制数
{
string res;
while(num)
{
int r=num%b; //余数
//数字转换为字符👇
char digit;
if(r<10)
digit=r+'0';
else
digit=r+'A'-10;
res=digit+res; //每次算出的digit是高位所以要加在前面
num/=b; //num更新为上次除法的商
}
return res;
}