如何用c语言将8位二进制数字转换成一个十六进制的字符?如10110100转换为b4?

2025-01-08 08:51:33
推荐回答(2个)
回答1:

#include
#include

void BCH(char,char);

void main()
{
int i,flag=0;
char hex[2];
char binary[8];

while(!flag)
{
printf("请输入一个8位二进制数:");
scanf("%s",binary);
for(i=0;i<8;i++)
if(binary[i]!='1' && binary[i]!='0')
{
flag=0;
printf("你输入的不是二进制数,请重新输入\n\n");
break;
}
else
flag=1;
}
BCH(binary,hex);
printf("对应的十六进制数是:");
printf("%c",hex[0]);
printf("%c\n",hex[1]);

}

void BCH(char *binary,char *hex)
{
int hbit,lbit,i;
hbit=lbit=0;
for(i=3;i>=0;i--)
{
if(binary[3-i]=='0');
else
hbit+=(int)pow(2,i);
}
for(i=3;i>=0;i--)
{
if(binary[7-i]=='0');
else
lbit+=(int)pow(2,i);
}

switch(hbit)
{
case 10:
hex[0]='A';
break;
case 11:
hex[0]='B';
break;
case 12:
hex[0]='C';
break;
case 13:
hex[0]='D';
break;
case 14:
hex[0]='E';
break;
case 15:
hex[0]='F';
break;
default:
hex[0]=hbit+'0';
break;
}

switch(lbit)
{
case 10:
hex[1]='A';
break;
case 11:
hex[1]='B';
break;
case 12:
hex[1]='C';
break;
case 13:
hex[1]='D';
break;
case 14:
hex[1]='E';
break;
case 15:
hex[1]='F';
break;
default:
hex[1]=lbit+'0';
break;
}
}

运行调试过了,没问题的。有问题请继续指教。。

回答2:

1011 0100
11(b) 4