#include <iostream>
#include <string>
#include <cmath>
using namespace std;
// 将十进制整数转换为任意进制字符串
string decimalToBase(int num, int base) {
if (base < 2 || base > 36) return "Invalid base"; // 进制范围检查
string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string result = "";
bool isNegative = num < 0;
if (isNegative) num = -num; // 处理负数
do {
result = digits[num % base] + result;
num /= base;
} while (num != 0);
if (isNegative) result = "-" + result;
return result;
}
// 将任意进制字符串转换为十进制整数
int baseToDecimal(const string& numStr, int base) {
if (base < 2 || base > 36) return -1; // 进制范围检查
string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int result = 0;
int sign = 1;
size_t start = 0;
if (numStr[0] == '-') {
sign = -1;
start = 1;
}
for (size_t i = start; i < numStr.length(); ++i) {
char c = toupper(numStr[i]);
int digit = digits.find(c);
if (digit == string::npos || digit >= base) return -1; // 非法字符或超出进制范围
result = result * base + digit;
}
return result * sign;
}
int main() {
// 示例:将十进制数转换为二进制、八进制、十六进制
cout << "Decimal 255 to Binary: " << decimalToBase(255, 2) << endl;
cout << "Decimal 255 to Octal: " << decimalToBase(255, 8) << endl;
cout << "Decimal 255 to Hexadecimal: " << decimalToBase(255, 16) << endl;
// 示例:将二进制、八进制、十六进制转换为十进制
cout << "Binary 11111111 to Decimal: " << baseToDecimal("11111111", 2) << endl;
cout << "Octal 377 to Decimal: " << baseToDecimal("377", 8) << endl;
cout << "Hexadecimal FF to Decimal: " << baseToDecimal("FF", 16) << endl;
return 0;
}
decimalToBase 函数:
num 转换为指定进制 base 的字符串表示。baseToDecimal 函数:
numStr 转换为十进制整数。main 函数:
上一篇:c++ 获取系统时间
下一篇:c++freopen怎么用
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站