当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > 10进制转16进制(采用移位实现)

10进制转16进制(采用移位实现) 时间:2018-09-25      来源:未知

数值的进制转换在编程中经常会遇到,今天给大家介绍一种通过移位运算实现进制转换的方法。

/*

功能: 该函数采用移位实现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;

}

上一篇:大神修炼第一步

下一篇:linux网络编程中的并发控制

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部