利用进制转换方法:用按权展开法。
然后,1500的十六进制转换结果为:5DC
1·char * convertToBase16(int num) 2·{ 3· if (!num) 4· { 5· return "0"; 6· } 7· 8· char * retstr = (char *)malloc(12*sizeof(char)); // 分配存放区域 9· memset(retstr, '0', 12*sizeof(char));1011121314151617 10· 11· if (num < 0) 12· { 13· strcat(retstr, "-"); 14· num = -num; 15· } 16· 17· char arr[12]; 18· memset(arr, 0, 12*sizeof(char)); 19· int i = 0; 20· while (num > 0) 21· { 22· arr[i] = (char)(num % 16 + '0'); 23· num = num / 16; 24· i++; 25· 26·} 27· 28· i--; 29· 30· for ( ; i >= 0; i--) 31· { 32 strncat(retstr, arr+i, 1); 33 } 34 35 return retstr; }
Tips:
void memset(void * str, int c, size_t n); 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前n个字符
char * strcat(char * dest, const char * src); 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾
char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。
1·string convertToBase16(int num) 2·{ 3· string s; 4· 5· // boundary 6· if (!num) 7· return "0"; 8· 9· int flag = 0; 10· if (num < 0) 11· { 12· flag = 1; 13· num = -num; 14· } 15· char reset; 16· 17· while (num > 0) 18· { 19· reset = char(num % 16) + '0'; 20· num = num / 16; 21· s = reset + s; //后得到的,写在前面,进制转换的计算方法 22· } 23· 24· if (flag) 25· s = '-' + s; 26· 27· 28· return s; 29·}
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2018 群英 版权所有 茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号-36 粤公网安备 44090202000006号 粤工商备P091701000595