c语言,输入一个32位二进制,转换为十六进制并输出
时间: 2023-05-29 22:06:23 浏览: 372
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char binary[33];
printf("请输入32位二进制数:");
scanf("%s", binary);
if (strlen(binary) != 32) {
printf("输入错误!\n");
return 0;
}
int i = 0, j = 0;
char hex[9];
while (i < 32) {
int dec = (binary[i] - '0') * 8 + (binary[i + 1] - '0') * 4
+ (binary[i + 2] - '0') * 2 + (binary[i + 3] - '0');
if (dec < 10) {
hex[j++] = dec + '0';
} else {
hex[j++] = dec - 10 + 'A';
}
i += 4;
}
hex[j] = '\0';
printf("十六进制为:%s\n", hex);
return 0;
}
```
相关问题
c语言,输入一个二进制,转换为十六进制并输出
以下是一个将二进制转换为十六进制的C语言程序:
```c
#include <stdio.h>
#include <string.h>
int main() {
char binary[17];
printf("请输入一个二进制数(最多16位):");
scanf("%s", binary);
int len = strlen(binary);
// 补齐到4的倍数
int mod = len % 4;
if (mod != 0) {
for (int i = 0; i < 4 - mod; i++) {
binary[len + i] = '0';
}
len += 4 - mod;
}
// 转换为十六进制
printf("转换为十六进制:");
for (int i = 0; i < len; i += 4) {
int sum = 0;
for (int j = 0; j < 4; j++) {
sum = sum * 2 + (binary[i + j] - '0');
}
if (sum < 10) {
printf("%d", sum);
} else {
printf("%c", 'A' + sum - 10);
}
}
printf("\n");
return 0;
}
```
该程序首先读取一个最多16位的二进制数,然后将其补齐到4的倍数。接着,程序将每4位二进制数转换为一个十六进制数,并输出结果。
c语言,输入一个二进制,转换为十六进制并输出,最简写法
```c
#include <stdio.h>
int main() {
int n;
scanf("%i", &n);
printf("%X", n);
return 0;
}
```