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

如题所述

#include <stdlib.h>
#include <math.h>

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;
}
}

运行调试过了,没问题的。有问题请继续指教。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-02
1011 0100
11(b) 4追问

同上

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网