//由m进制转换为n进制
//思路 先由m进制转换为10进制 按权展开式
//再由10进制转换为n进制 辗转相除法,保留每一步的余数
//手动建立映射,便于编写过程
string m2n(string str){
int hashch[256];
for(int i=0;i<=9;i++) hashch[i+'0']=i;
for(int i=10;i<=35;i++) hashch['A'+i-10]=i;
for(int i=10;i<=35;i++) hashch['a'+i-10]=i;
char hashnum[256]
for(int i=0;i<=9;i++) hashch[i]=i+'0';
for(int i=10;i<=35;i++) hashch[i]='a'+i-10;
int ans=0;
for(int i=0;i<str.size();i++)
ans=ans*m+hashch[str[i]];
string str="";
while(ans){
str=str+hashnum[ans%n];//这样就实现了逆序存储余数
ans/=n;
}
// 000abcd1230456
//返回后可能存在前导零
return str;
}
来源:CSDN
作者:栈,
链接:https://blog.csdn.net/qq_924485343/article/details/104196682