c++使用栈编写二进制转八进制转十进制转十六进制完整代码
时间: 2024-10-18 18:11:18 浏览: 35
C++实现十六进制字符串转换为十进制整数的方法
在C++中,我们可以使用栈数据结构来辅助转换二进制、八进制、十进制和十六进制。下面是一个简单的示例,分别展示了如何实现这四个进制之间的转换:
```cpp
#include <iostream>
#include <stack>
#include <string>
// 将二进制字符串转换为整数
int binaryToDecimal(std::string binary) {
int decimal = 0;
for (char digit : binary) {
if (digit == '1')
decimal = decimal * 2 + 1;
else if (digit != '0') // 二进制只有0和1,其他字符表示错误
return -1; // 返回错误,因为非0和1的数字不是有效的二进制
}
return decimal;
}
// 将十进制转换为其他进制字符串
std::string convertBase(int value, int base) {
std::stack<int> digits;
while (value > 0) {
digits.push(value % base);
value /= base;
}
std::string result = "";
while (!digits.empty()) {
result += std::to_string(digits.top());
digits.pop();
}
return result;
}
int main() {
std::string inputBinary = "101010"; // 示例二进制字符串
int decimalValue = binaryToDecimal(inputBinary);
if (decimalValue >= 0) {
std::cout << "二进制(" << inputBinary << ") 转十进制: " << decimalValue << std::endl;
// 转换到其他进制
std::cout << "八进制: " << convertBase(decimalValue, 8) << std::endl;
std::cout << "十六进制: " << convertBase(decimalValue, 16) << std::endl;
} else {
std::cout << "无效的二进制字符串!" << std::endl;
}
return 0;
}
```
这个程序首先将输入的二进制字符串转换成十进制,然后根据需要进一步转换为八进制或十六进制。
阅读全文