#include<bits/stdc++.h>
using namespace std;
long long to_ten(const string& num, int base) { // 将指定进制数转换为十进制
if(num=="0") return 0;
long long tmp=0;
for (int i=num.size()-1,j=0;i>=0;i--,j++){
int digit;
if(num[i]>='0'&&num[i]<='9') digit=num[i]-'0';
else if(num[i]>='A'&&num[i]<='F') digit=num[i]-'A'+10;
tmp+=digit*pow(base,j);
}
return tmp;}
string from_ten(long long tmp, int base) { // 将十进制转换为指定进制
string result;
while (tmp>0) {
int remainder=tmp%base;
if (remainder<10) result=char(remainder+'0')+result;
else result=char(remainder-10+'A')+result;
tmp/=base;
}
return result;}
void main_to(const string& num,int fromBase,int toBase) { // 进制转换主函数
long long tmp=to_ten(num,fromBase);
string result=from_ten(tmp, toBase);
cout<<"转换结果: "<<result<<endl;}
int main(){
string num;
int fromBase,toBase;
cout<<"请输入数字:";cin>>num;
cout<<"请输入原进制:";cin>>fromBase;
cout<<"请输入目标进制:";cin>>toBase;
main_to(num,fromBase,toBase);return 0;}
C++进制转换模板代码
于 2024-08-16 09:34:58 首次发布