下面是一个使用C++编写的简单数制转换工具,该工具包含了二进制、十进制和十六进制之间的转换功能。
二进制转十进制
int binaryToDecimal(const std::string& binary) {
int decimal = 0, base = 1;
int len = binary.length();
for (int i = len - 1; i >= 0; --i) {
if (binary[i] == '1') {
decimal += base;
}
base *= 2;
}
return decimal;
}
这段代码通过遍历二进制字符串,从右到左计算每个位上的值,并累加到decimal变量中。
十进制转二进制
std::string decimalToBinary(int decimal) {
std::string binary = "";
while (decimal > 0) {
binary = (decimal % 2 == 0 ? '0' : '1') + binary;
decimal /= 2;
}
return binary;
}
该函数通过不断除以2并取余数,得到二进制的每一位,直到十进制数为0。
十进制转十六进制
使用C++标准库中的stringstream和hex操作符可以方便地实现十进制和十六进制之间的转换。
std::string decimalToHexadecimal(int decimal) {
std::stringstream ss;
ss << std::hex << std::uppercase << decimal;
return ss.str();
}
十六进制转十进制
int hexadecimalToDecimal(const std::string& hexadecimal) {
std::stringstream ss(hexadecimal);
int decimal;
ss >> std::hex >> decimal;
return decimal;
}
主函数与用户交互
主函数main()负责处理用户输入和输出,以及调用上述转换函数。用户首先选择一个转换选项,然后输入相应的数字。程序将根据用户的选择进行相应的数制转换,并输出结果。
int main() {
int choice;
std::string input;
std::cout << "请输入您的选择:\n";
std::cout << "1. 二进制转十进制\n";
std::cout << "2. 二进制转十六进制\n";
std::cout << "3. 十进制转二进制\n";
std::cout << "4. 十进制转十六进制\n";
std::cout << "5. 十六进制转二进制\n";
std::cout << "6. 十六进制转十进制\n";
std::cin >> choice;
std::cout << "请输入数字: ";
std::cin >> input;
std::transform(input.begin(), input.end(), input.begin(), ::tolower); // 转换为小写以进行十六进制转换
switch (choice) {
case 1: // 二进制转十进制
std::cout << "十进制: " << binaryToDecimal(input) << std::endl;
break;
case 2: // 二进制转十六进制
std::cout << "十六进制: " << decimalToHexadecimal(binaryToDecimal(input)) << std::endl;
break;
case 3: // 十进制转二进制
std::cout << "二进制: " << decimalToBinary(std::stoi(input)) << std::endl;
break;
case 4: // 十进制转十六进制
std::cout << "十六进制: " << decimalToHexadecimal(std::stoi(input)) << std::endl;
break;
case 5: // 十六进制转二进制
std::cout << "二进制: " << decimalToBinary(hexadecimalToDecimal(input)) << std::endl;
break;
case 6: // 十六进制转十进制
std::cout << "十进制: " << hexadecimalToDecimal(input) << std::endl;
break;
default:
std::cout << "选择无效!" << std::endl;
}
return 0;
}
标签:std,binary,转换,进制,int,decimal,C++,十进制,string
From: https://www.cnblogs.com/sunwenqi/p/18229009