16进制数组转字符串
发布日期:2021-06-30 18:59:11
浏览次数:3
分类:技术文章
本文共 2370 字,大约阅读时间需要 7 分钟。
修改函数原型,确保每次malloc后可以释放堆控件
char * HexToString(char *str,unsigned char Hex[],unsigned char lenth){ unsigned char i=0,j=0; unsigned char tema,temp; //char *str=(char*)malloc(lenth*2); for(i=0;i>4)&0x0F; str[j]=IntToStr(tema); j++; temp=Hex[i]&0x0F; str[j]=IntToStr(temp); j++; } str[j]='\0'; return str;}
char *strH=(char*)malloc(4*2); QByteArray macStr=HexToString(strH,addrC,4); if(strH!=NULL)free(strH);
今天做东西要用这个,读出来的ID号是16进制的,但是返回给上层的是字符串,LINUX下的底层函数想不到。比如unsigned char temp[10]={0xAB,0XAB,0XAB,0XAB,0XDB,0XEB,0XAB,0XAC,0XAC,0xee};我要输出的就是这样子,底层传上来的不是ASCII码。蛋痛得很`其他资料也没找到,本来想用sprintf函数的。可是完全不对头。后面已经写了这个功能函数。
# include#define DATA_LENGTH 20
//函 数 名:StrToInt()//功能描述:把字符转换成对应的数字,比如a转换成10char StrToInt(char aChar){ char ss; switch(aChar) { case '0': ss= 0;break; case '1': ss= 1;break; case '2': ss= 2;break; case '3': ss= 3;break; case '4': ss= 4;break; case '5': ss= 5;break; case '6': ss= 6;break; case '7': ss= 7;break; case '8': ss= 8;break; case '9': ss= 9;break; case 'A': ss= 10;break; case 'B': ss= 11;break; case 'C': ss= 12;break; case 'D': ss= 13;break; case 'E': ss= 14;break; case 'F': ss= 15;break; default:break; } //printf("%c\n",ss); return ss;}
//函 数 名:HexToAsc()//功能描述:把16进制转换为ASCIIchar IntToStr(unsigned char aChar){ char ss; switch(aChar) { case 0: ss= '0';break; case 1: ss= '1';break; case 2: ss= '2';break; case 3: ss= '3';break; case 4: ss= '4';break; case 5: ss= '5';break; case 6: ss= '6';break; case 7: ss= '7';break; case 8: ss= '8';break; case 9: ss= '9';break; case 10: ss= 'A';break; case 11: ss= 'B';break; case 12: ss= 'C';break; case 13: ss= 'D';break; case 14: ss= 'E';break; case 15: ss= 'F';break; default:break; } //printf("%c\n",ss); return ss; } char * HexToString(unsigned char Hex[],unsigned char lenth){ unsigned char i=0,j=0; unsigned char tema,temp; char *str=(char*)malloc(lenth*2); printf("Large:-----%d\n",lenth*2); for(i=0;i>4)&0x0F; printf("%d\n",tema); str[j]=IntToStr(tema); printf("i=%d, %c\n",i,str[j]); j++; temp=Hex[i]&0x0F; printf("%d\n",temp); str[j]=IntToStr(temp); printf("i=%d, %c\n",i,str[j]); j++; } str[j]='\0'; printf("Large:--j=%d\n",j); for(i=0;i
转载地址:https://linus.blog.csdn.net/article/details/9844861 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月29日 15时01分44秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于MATLAB的模拟调制信号与解调的仿真——DSB
2019-04-30
基于MATLAB的模拟调制信号与解调的仿真——SSB
2019-04-30
操作系统实验之生产者和消费者程序
2019-04-30
操作系统实验之猴子过桥问题的模拟程序
2019-04-30
POJ - 3067 Japan (树状数组 思维)
2019-04-30
POJ - 2352 Stars (树状数组 入门题)
2019-04-30
HDU - 1166 敌兵布阵 (树状数组模板题/线段树模板题)
2019-04-30
CodeForces - 761C Dasha and Password (思维 暴力)
2019-04-30
POJ - 2481 Cows (树状数组 入门题)
2019-04-30
ACM-ICPC 2018 焦作赛区网络预赛 I. Save the Room
2019-04-30
CodeForces - 987C Three displays (暴力/dp)
2019-04-30
计蒜客 NAIPC 2016 F. Mountain Scenes(dp)
2019-04-30
牛客国庆集训派对Day4——I 连通块计数(思维)
2019-04-30
牛客国庆集训派对Day4——G 区间权值(找规律,双重前缀和)
2019-04-30
牛客国庆集训派对Day5——L 数论之神(找规律/数论)
2019-04-30
CodeForces - 629B Far Relative’s Problem(模拟)
2019-04-30