日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

16进制数组转字符串

發布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 16进制数组转字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

修改函數原型,確保每次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<lenth;i++){tema=(Hex[i]>>4)&0x0F;str[j]=IntToStr(tema);j++;temp=Hex[i]&0x0F;str[j]=IntToStr(temp);j++;}str[j]='\0';return str; } <pre name="code" class="cpp">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 <stdlib.h>#define DATA_LENGTH 20 //函 數 名:StrToInt() //功能描述:把字符轉換成對應的數字,比如a轉換成10 char 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進制轉換為ASCII char 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<lenth;i++){tema=(Hex[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<lenth*2;i++){printf("kkkkk:i=%d ;str[i]:%c\n",i,str[i]);}printf("wqf:%s\n",str);return str; }void main() {char *str=NULL;unsigned char temp[10]={0xAB,0XAB,0XAB,0XAB,0XDB,0XEB,0XAB,0XAC,0XAC,0xee};str=HexToString(temp,10);printf("%s\n",str); }

總結

以上是生活随笔為你收集整理的16进制数组转字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。