C语言二进制如何转换成十六进制

如题所述

#include <stdio.h>
#include <math.h>
void main()
{


int a=98765;//需要转换的数字

int yiwei=0xF;//用以移位的数字
int numbers=0;//记录移位多次
int tmp=0,index=0;
char buffer[11]={'0'};//

   buffer[1]='x';//buffer[2]='0';
    buffer[10]='\0';//给最后一个补充\0
do//移位到最后高位都是1,因此最后会是一个负数
{
tmp=a&yiwei; //取出四位当做十六进制的一位

tmp>>=numbers*4;//要还原取出来的这个数字,如果不是在低位取得就需要这样操作

if(tmp>=10&&tmp<16)
    buffer[10-1-index]=tmp-10+'a';//因为从最低位取的,因此赋值从数组最后面开始赋
        else if(tmp<10&&tmp>=0)
buffer[10-1-index]='0'+tmp;

if(yiwei<<4<0)//这里判断是不是已经到了最高位了,如果是最高位,最高的前三位是数字,最后一位是符号
yiwei=yiwei<<3;
else
yiwei<<=4;//把这个数字向后移四位,用以取下一个四位
  
index++;
  numbers++;
}while(yiwei>0);
 
printf("%s\n",buffer);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-16
printf("%x", aaa) 在屏幕上打印的aaa变量
sprintf(buf,"%x",aaa)

将你所说的放到aaa中,然后buf中就是16进制的了。
只有在打印的时候,16进制和二进制才有区别,在计算机中,都是二进制的本回答被网友采纳
第2个回答  2014-03-31
C语言中,二进制的4位数据表示1位的十六进制数字 如:10010101 ——> 1001 0101——>0x95
第3个回答  2014-03-31
二进制4位表示一位十六进制
例如10110101--》1011,0101=(B3)

相关了解……

你可能感兴趣的内容

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