C/C++ 讀取16進制文件的方法
1.為什么有這種需求
因為有些情況需要避免出現(xiàn)亂碼。不管什么編碼都是二進制的,這樣表示為16進制就可以啦。
2.如何讀取16進制文件
最近編程用這一問題,網(wǎng)上查了一下,感覺還是自己寫吧。
16進制數(shù)據(jù)一般是:text=0x340xb5...,就是0x開頭,之后是兩個數(shù)字十六進制數(shù)。
如果直接使用sscanf(text,"0x",&num),會把連續(xù)的數(shù)字讀進去直到遇到'x'.
如使用sscanf讀取text第一個讀到的十六進制數(shù)是0x340,誤判啦。最后,因為是4個一組,就先把4個存到數(shù)組,再讀取吧??春竺娴拇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進制文件的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
C++ OpenCV實戰(zhàn)之文檔照片轉換成掃描文件
這篇文章主要為大家介紹一個C++?OpenCV的實戰(zhàn)——文檔照片轉換成掃描文件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2022-09-09解析如何用指針實現(xiàn)整型數(shù)據(jù)的加法
本篇文章是對用指針實現(xiàn)整型數(shù)據(jù)加法的方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05C++11中std::function與std::bind的用法實例
大家都知道C++11中增加了許多的新特性,下面這篇文章主要給大家介紹了關于C++11中std::function與std::bind的用法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-05-05