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; }
发表评论
|