#include <stdio.h>
/*****下面将整数a转换成十六进制输出的字符串*****/ /*****原理:1,首先知道0b100000 = 0b10000*2 = 0b1000*2 = 0b100*2 =0b10*2利用这一特性能将char型的数字转换成10进制表示,比如:0b1111转换成15 *****/ /***** 2,15以内的十进制数输出成十六进制数的字符串显示方法是:当0~9时,直接输出n+'0',其中n表示具体的十进制数;当10到15时,用‘a’+n-10 表示 *****/ /***** 3,在32位的芯片最大只能表示32位的二进制数 *****/ /***** 4,比如想要显示0XABCDEF99 ,先把A这个字符存进char数组,在把B存进char数组,以此类推,最后在char数组存进字符串结束符‘\0’ ****/ int sw1016(unsigned int a,char *p)
{
unsigned int mask=0x80000000;
int t=0;
int k=0;
int sum=0;
int c=2;
*(p+0)='0';
*(p+1)='X';
*(p+10)='\0';
for(k=0;k<8;k++)
{
for(t=0;t<4;t++)
{
if((a&mask)==mask)
{
sum=sum*2+1;
}
else
{
sum=sum*2+0;
}
a=a<<1;
}
if(sum<10)
p[c]=sum+'0';
else
p[c]='a'+sum-10;
sum=0;
c++;
}
return 0;
}
int main()
{
unsignedint in=486256;
char p[11];
sw1016(in,p);
printf("xen:%s",p);
}