diff --git a/zuoye.cpp b/zuoye.cpp new file mode 100644 index 0000000..81a6da7 --- /dev/null +++ b/zuoye.cpp @@ -0,0 +1,73 @@ +#include +#include +#include +#include + +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; +} +