当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > 10进制转16进制(采用移位实现)
10进制转16进制(采用移位实现)
时间:2017-08-22作者:华清远见

#include <stdio.h>

#include <string.h>

//#define print(format,...) fprintf(stderr,format,##__VA_ARGS__)

//#define print1(format,args...) fprintf(stderr,format,##args)

/*

 功能:     该函数采用移位实现10进制数转换成16进制数

 函数名:   to10_16

 参数 :  n--要转换的10进制数

 编写:      刘sir

 时间:  2012.7

 版本:  v1.0

*/

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;

}


发表评论
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2018 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号,京公海网安备11010802025203号