|
|
|
@ -0,0 +1,73 @@
|
|
|
|
|
#include <iostream>
|
|
|
|
|
#include <string>
|
|
|
|
|
#include <cmath>
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
|
// 符号转化为数字
|
|
|
|
|
int get_num(char c) {
|
|
|
|
|
if (isdigit(c)) {
|
|
|
|
|
return c - '0';
|
|
|
|
|
}
|
|
|
|
|
if ('a' <= c && c <= 'z') {
|
|
|
|
|
return c - 'a' + 10;
|
|
|
|
|
}
|
|
|
|
|
if ('A' <= c && c <= 'Z') {
|
|
|
|
|
return c - 'A' + 10;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 数字转化为符号
|
|
|
|
|
char get_char(int num) {
|
|
|
|
|
return '0';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//将字符串根据进制转化为数字
|
|
|
|
|
int to_num(string& number, int base) {
|
|
|
|
|
int n = number.size();
|
|
|
|
|
long long num = 0;
|
|
|
|
|
for (int i = 0; i < n; i++) {
|
|
|
|
|
char ch = number[i];
|
|
|
|
|
num *= base;
|
|
|
|
|
num += get_num(ch);
|
|
|
|
|
}
|
|
|
|
|
return num;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//将数字根据进制转化为字符串
|
|
|
|
|
string tostring(int num, int base) {
|
|
|
|
|
if (num == 0) return "0";
|
|
|
|
|
|
|
|
|
|
string ans;
|
|
|
|
|
while (num > 0) {
|
|
|
|
|
ans += get_char(num % base);
|
|
|
|
|
num /= base;
|
|
|
|
|
}
|
|
|
|
|
reverse(ans.begin(), ans.end());
|
|
|
|
|
return ans;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string convertBase(string& num, int st_base, int en_base) {
|
|
|
|
|
return tostring(to_num(num, st_base), en_base);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
string number;
|
|
|
|
|
int st_base, en_base;
|
|
|
|
|
|
|
|
|
|
cout << "输入数字:";
|
|
|
|
|
cin >> number;
|
|
|
|
|
cout << "输入源进制(2-16):";
|
|
|
|
|
cin >> st_base;
|
|
|
|
|
cout << "输入目标进制(2-16):";
|
|
|
|
|
cin >> en_base;
|
|
|
|
|
|
|
|
|
|
string ans = convertBase(number, st_base, en_base);
|
|
|
|
|
cout << "转换后的数字是:" << ans << endl;
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|