进制转换器:C++ 代码实现不同进制数据转换
进制转换器:C++ 代码实现不同进制数据转换
本程序使用 C++ 语言实现任意两种进制 (2-16 进制) 之间的数据转换。输入包含原始进制、原始数和目标进制,输出转换为目标进制后的数。代码清晰易懂,并包含示例输入和输出。
输入
共三行,第一行是一个正整数,表示需要转换的数的进制 n (2≤n≤16),第二行是一个 n 进制数,若 n>10 则用大写字母 A∼F 表示数码 10∼15,并且该 n 进制数对应的十进制的值不超过 109,第三行也是一个正整数,表示转换之后的数的进制 m (2≤m≤16)。
输出
一个正整数,表示转换之后的 m 进制数。
样例输入
16 FF 2
样例输出
11111111
C++ 代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int charToNum(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else {
return c - 'A' + 10;
}
}
char numToChar(int num) {
if (num >= 0 && num <= 9) {
return num + '0';
} else {
return num - 10 + 'A';
}
}
string convertToDecimal(string num, int base) {
int decimal = 0;
int power = 1;
for (int i = num.size() - 1; i >= 0; i--) {
decimal += charToNum(num[i]) * power;
power *= base;
}
return to_string(decimal);
}
string convertToBase(string num, int base) {
int decimal = stoi(num);
string result = '';
while (decimal > 0) {
int remainder = decimal % base;
result += numToChar(remainder);
decimal /= base;
}
reverse(result.begin(), result.end());
return result;
}
int main() {
int n;
cin >> n;
string num;
cin >> num;
int m;
cin >> m;
string decimalNum = convertToDecimal(num, n);
string result = convertToBase(decimalNum, m);
cout << result << endl;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/qB3Q 著作权归作者所有。请勿转载和采集!