这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 10进制转16进制(采用移位实现)

共1条 1/1 1 跳转至

10进制转16进制(采用移位实现)

高工
2017-10-19 13:47:57     打赏

#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进制数

*/

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;

}




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]