#include <iostream>
#include <cctype>
using namespace std;
int pow(int a,int b)
{
int ans=1;
while(b--)
ans*=a;
return ans;
}
int radix1(string &a,int n)
{
int ans=0;
for(int i=0;a[i];i++)
{
if(isdigit(a[i])) ans=ans*n+a[i]-'0';
else if(isupper(a[i])) ans=ans*n+a[i]-'A'+10+1;
else if(islower(a[i])) ans=ans*n+a[i]-'a'+10+26+1;
}
return ans;
}
int radix2(string &a,int n)
{
int ans=0,ans0,len=a.size();
for(int i=len-1;i>=0;i--)
{
if(isdigit(a[i])) ans0=a[i]-'0';
else if(isupper(a[i])) ans0=a[i]-'A'+10+1;
else if(islower(a[i])) ans0=a[i]-'a'+10+26+1;
ans+=ans0*pow(n,len-i-1);
}
return ans;
}
void welcome()
{
cout<<"\t\t\t\t测试进制转换"<<endl;
cout<<"\t\t\t\t\t\tBy:sdk2 QQ:469656392"<<endl<<endl<<endl;
}
int main()
{
welcome();
while(1)
{
int n;
cout<<"输入进制(n≤62) ";
cin>>n;
cout<<"\t"<<"输入一个"<<n<<"进制的数 ";
string a;
cin>>a;
cout<<"\t"<<"该数等于十进制的 "<<endl;;
cout<<"\t"<<radix1(a,n)<<" (算法1)"<<endl;
cout<<"\t"<<radix2(a,n)<<" (算法2)"<<endl<<endl<<endl;
}
return 0;
}
c++实现的任意进制数转十进制数算法
原文作者:进制转换
原文地址: https://blog.csdn.net/code_sdk2/article/details/50191573
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/code_sdk2/article/details/50191573
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。