用c++编写16进制转2进制
时间: 2024-01-21 16:03:37 浏览: 163
以下是一个简单的 C++ 程序,可以将 16 进制数转换为 2 进制数:
```c++
#include <iostream>
#include <string>
#include <bitset>
using namespace std;
int main() {
string hex_num;
cout << "Enter a hexadecimal number: ";
cin >> hex_num;
int dec_num = stoi(hex_num, nullptr, 16);
bitset<32> bin_num(dec_num);
cout << "The binary equivalent is: " << bin_num.to_string().substr(bin_num.to_string().find('1')) << endl;
return 0;
}
```
程序首先提示用户输入 16 进制数,然后将其转换为十进制数。接着,使用 std::bitset 将十进制数转换为二进制数,并输出结果。
需要注意的是,该程序中使用的是 C++11 引入的 std::bitset,因此需要使用编译器支持 C++11 的编译选项。如果编译器不支持 C++11,可以使用其他方法实现二进制转换,比如手动实现二进制转换算法。
相关问题
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;
}
```
这个程序首先将输入的二进制字符串转换成十进制,然后根据需要进一步转换为八进制或十六进制。
C++编写十六进制转换十进制
#include <stdio.h>
int main() {
char hex[100];
int decimal = 0, i = 0, j, digit;
printf("Enter a hexadecimal number: ");
scanf("%s", hex);
// Find the length of the hexadecimal number
while(hex[i] != '\0') {
i++;
}
i--;
// Convert hexadecimal to decimal
for(j = 0; hex[j] != '\0'; j++) {
if(hex[j] >= '0' && hex[j] <= '9') {
digit = hex[j] - '0';
} else if(hex[j] >= 'a' && hex[j] <= 'f') {
digit = hex[j] - 'a' + 10;
} else if(hex[j] >= 'A' && hex[j] <= 'F') {
digit = hex[j] - 'A' + 10;
}
decimal += digit * pow(16, i);
i--;
}
printf("Decimal number: %d\n", decimal);
return 0;
}
阅读全文