下面是一个将二进制数转换为十六进制并输出的示例代码:
#include <stdio.h>
#include <string.h>
// 将二进制字符串转换为十六进制字符
char binaryToHex(char *binary) {
int decimal = 0;
int base = 1;
int len = strlen(binary);
// 将二进制转换为十进制
for (int i = len - 1; i >= 0; --i) {
if (binary[i] == '1') {
decimal += base;
}
base *= 2;
}
// 将十进制转换为十六进制字符
char hex;
if (decimal >= 0 && decimal <= 9) {
hex = decimal + '0';
}
else {
hex = decimal - 10 + 'A';
}
return hex;
}
int main() {
char binary[65];
printf("请输入一个二进制数(最多64位):");
scanf("%s", binary);
int len = strlen(binary);
// 补0,使二进制位数为4的倍数
int remainder = len % 4;
if (remainder != 0) {
int padding = 4 - remainder;
for (int i = len + padding; i >= padding; --i) {
binary[i] = binary[i - padding];
}
for (int i = 0; i < padding; ++i) {
binary[i] = '0';
}
len += padding;
}
printf("转换为十六进制:");
for (int i = 0; i < len; i += 4) {
char temp[5];
strncpy(temp, binary + i, 4);
temp[4] = '\0';
char hex = binaryToHex(temp);
printf("%c", hex);
}
printf("\n");
return 0;
}
在这个示例中,我们定义了一个函数binaryToHex
,该函数接受一个二进制字符串作为参数,并将其转换为十六进制字符。
然后,在main
函数中,我们首先输入一个最多64位的二进制数,并计算其长度。
接下来,我们检查二进制数的位数是否是4的倍数。如果不是,则在前面补零,使其位数为4的倍数。
然后,使用循环每4位截取二进制数,并调用binaryToHex
函数进行转换。将得到的十六进制字符逐个输出。
当你运行这个程序时,它将提示你输入一个二进制数,并输出其相应的十六进制表示。
例如,如果输入二进制数1101011001
,则输出:
转换为十六进制:DA
请注意,这个程序假设输入的二进制数最多为64位,并进行了一些错误处理,如自动补零和长度限制。你可以根据实际需求进行修改。