16进制转二进制c++
时间: 2023-05-29 21:08:03 浏览: 475
以下是一个将16进制转换为二进制的C语言程序示例:
```
#include <stdio.h>
#include <string.h>
int main() {
char hex[17];
long long binary = 0;
int i = 0, digit;
printf("请输入一个16进制数: ");
scanf("%s", hex);
for (i = 0; hex[i] != '\0'; i++) {
digit = hex[i] >= '0' && hex[i] <= '9' ? hex[i] - '0' : hex[i] - 'A' + 10;
binary = binary * 16 + digit;
}
printf("对应的二进制数为: %lld", binary);
return 0;
}
```
该程序首先提示用户输入一个16进制数,然后使用循环遍历每个十六进制数位并将其转换为对应的二进制数位。最后,程序输出转换后的二进制数。
相关问题
用c++写16进制转二进制
以下是C语言代码实现16进制转二进制:
```c
#include <stdio.h>
// 将16进制字符转换为相应的二进制数值
int hexCharToBinary(char c)
{
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'A' && c <= 'F') {
return c - 'A' + 10;
} else if (c >= 'a' && c <= 'f') {
return c - 'a' + 10;
} else {
return -1;
}
}
// 将16进制字符串转换为二进制字符串
void hexToBinary(char *hex, char *binary)
{
int i, j, digit;
for (i = 0, j = 0; hex[i] != '\0'; i++, j += 4) {
digit = hexCharToBinary(hex[i]);
if (digit == -1) {
printf("Error: invalid hex digit '%c'\n", hex[i]);
return;
}
binary[j] = ((digit & 8) == 8) ? '1' : '0';
binary[j+1] = ((digit & 4) == 4) ? '1' : '0';
binary[j+2] = ((digit & 2) == 2) ? '1' : '0';
binary[j+3] = ((digit & 1) == 1) ? '1' : '0';
}
binary[j] = '\0';
}
int main()
{
char hex[100], binary[100];
printf("Enter a hexadecimal number: ");
scanf("%s", hex);
hexToBinary(hex, binary);
printf("Binary equivalent: %s\n", binary);
return 0;
}
```
这个程序首先定义了一个函数 `hexCharToBinary`,用于将16进制字符转换为相应的二进制数值。然后定义了另一个函数 `hexToBinary`,用于将16进制字符串转换为二进制字符串。最后在 `main` 函数中读入一个16进制数,调用 `hexToBinary` 函数将其转换为二进制数,再输出结果。
2进制转16进制c++
以下是将二进制转换为十六进制的C++代码:
```
#include <iostream>
#include <string>
using namespace std;
// 将 4 位的 2 进制转换为 1 位的 16 进制
char num(string s){
// 从最低位开始按权展开,转换为10进制
// 再转换为16进制的字符
int r = 0, i, t = 1;
for(i = s.size() - 1; i >= 0; i--){
r = r + (s[i] - '0') * t;
t = t * 2;
}
char c;
// 存储1位的16进制字符
if(r < 10){
c = r + '0';
}else{
c = r + 'A' - 10;
}
return c;
}
int main(){
string s, t; // 存放二进制
cin >> s;
// 补 0
if(s.size() % 4 == 1){
s = "000" + s;
}else if(s.size() % 4 == 2){
s = "00" + s;
}else if(s.size() % 4 == 3){
s = "0" + s;
}
// 每4位一格,将4位的二进制转换为对应的16进制
for(int i = 0; i < s.size(); i = i + 4){
t = s.substr(i, 4);
cout << num(t);
}
return 0;
}
```
阅读全文