数值的进制转换在编程中经常会遇到,今天给大家介绍一种通过移位运算实现进制转换的方法。
/*
功能: 该函数采用移位实现10进制数转换成16进制数
函数名: to10_16
参数 : n--要转换的10进制数
编写: 刘sir
时间: 2015.7
版本: v1.0*
/
#include
#include
//#define print(format,...) fprintf(stderr,format,##__VA_ARGS__)
//#define print1(format,args...) fprintf(stderr,format,##args)
void to10_16(int n)
{
int a=n,n1,i;
char ch[9];
memset(ch,0,sizeof(ch)); //数组初始化
/*===================通过移位实现数值转换================================*/
for(i = 1;i <= 8;i++)
{
n1 = n-((n>>(4*i))<<(4*i));
n = (n>>(4*i))<<(4*i);
n1 = n1>>(4*(i-1));
if(0 == n1)
break;
if(n1 < 10)
ch[8-i] = n1+'0';
else
ch[8-i] = n1-10+'A';
}
ch[8] = '\0';
/*=========================================================================*/
//让p指向第一个非0的字符元素
char *p = ch;
while(0 == *p)p++;
printf("%d(10) is 0x%s(16)\n",a,p); //打印
}
int main(void)
{
int a,n,n1,i;
char ch[9];
memset(ch,0,sizeof(ch));
scanf("%d",&a);
to10_16(a);
return 0;
}
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,
差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。(点击找小助理领取)
扫码进群领资料https://s.pdb2.com/pages/20230519/16QijNiGb32IFIn.html