c语言二进制转16进制
时间: 2023-10-30 16:19:29 浏览: 130
将一个二进制数转换为十六进制数,可以将二进制数从右向左每四位为一组进行转换。
例如:1101 1010 0111 1001 转换为十六进制数
先将每四位二进制数转换为十六进制数:
1101 -> D
1010 -> A
0111 -> 7
1001 -> 9
所以,1101 1010 0111 1001 转换为十六进制数为 DA79。
以下是一个 C 语言程序示例,将二进制数转换为十六进制数:
```c
#include <stdio.h>
#include <string.h>
char bin_to_hex(char *bin) {
int len = strlen(bin);
int sum = 0;
int base = 1;
for (int i = len - 1; i >= 0; i--) {
if (bin[i] == '1') {
sum += base;
}
base *= 2;
}
if (sum >= 0 && sum <= 9) {
return '0' + sum;
} else if (sum >= 10 && sum <= 15) {
return 'A' + sum - 10;
}
}
void binary_to_hex(char *bin, char *hex) {
int len = strlen(bin);
int n = len / 4;
for (int i = 0; i < n; i++) {
char temp[5];
strncpy(temp, bin + i * 4, 4);
temp[4] = '\0';
hex[i] = bin_to_hex(temp);
}
hex[n] = '\0';
}
int main() {
char bin[17];
char hex[5];
printf("请输入一个16位的二进制数:");
scanf("%s", bin);
binary_to_hex(bin, hex);
printf("转换后的十六进制数为:%s\n", hex);
return 0;
}
```
输入一个16位的二进制数,程序将其转换为十六进制数并输出。