讲师博文
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网络编程中的并发控制

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号