1.為什么有這種需求
因為有些情況需要避免出現亂碼。不管什么編碼都是二進制的,這樣表示為16進制就可以啦。
2.如何讀取16進制文件
最近編程用這一問題,網上查了一下,感覺還是自己寫吧。
16進制數據一般是:text=0x340xb5...,就是0x開頭,之后是兩個數字十六進制數。
如果直接使用sscanf(text,"0x",&num),會把連續的數字讀進去直到遇到'x'.
如使用sscanf讀取text第一個讀到的十六進制數是0x340,誤判啦。最后,因為是4個一組,就先把4個存到數組,再讀取吧??春竺娴拇a好了。
3.代碼實例:
#include <string.h>#include <stdio.h>int main (){ const char a[]="0x450x110x8b0xe8"; char tmpHex[5]; int num; printf("the size of pattern:%d/n",sizeof(a)); //4*4+最后有一個'/0' for(int i=0;i<sizeof(a)-1;i+=4){ strncpy(tmpHex,a+i,4); tmpHex[4]='/0'; sscanf(tmpHex,"%x",&num); printf("%s %d/n",tmpHex,num); } return 0;}
輸出結果:
以上這篇C/C++ 讀取16進制文件的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答