#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;
}
}
运行调试过了,没问题的。有问题请继续指教。。
1011 0100
11(b) 4