C/C++ 讀取16進(jìn)制文件的方法
1.為什么有這種需求
因?yàn)橛行┣闆r需要避免出現(xiàn)亂碼。不管什么編碼都是二進(jìn)制的,這樣表示為16進(jìn)制就可以啦。
2.如何讀取16進(jìn)制文件
最近編程用這一問(wèn)題,網(wǎng)上查了一下,感覺(jué)還是自己寫吧。
16進(jìn)制數(shù)據(jù)一般是:text=0x340xb5...,就是0x開(kāi)頭,之后是兩個(gè)數(shù)字十六進(jìn)制數(shù)。
如果直接使用sscanf(text,"0x",&num),會(huì)把連續(xù)的數(shù)字讀進(jìn)去直到遇到'x'.
如使用sscanf讀取text第一個(gè)讀到的十六進(jìn)制數(shù)是0x340,誤判啦。最后,因?yàn)槭?個(gè)一組,就先把4個(gè)存到數(shù)組,再讀取吧??春竺娴拇a好了。
3.代碼實(shí)例:
#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+最后有一個(gè)'\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; }
輸出結(jié)果:
以上這篇C/C++ 讀取16進(jìn)制文件的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++ OpenCV實(shí)戰(zhàn)之文檔照片轉(zhuǎn)換成掃描文件
這篇文章主要為大家介紹一個(gè)C++?OpenCV的實(shí)戰(zhàn)——文檔照片轉(zhuǎn)換成掃描文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-09-09解析如何用指針實(shí)現(xiàn)整型數(shù)據(jù)的加法
本篇文章是對(duì)用指針實(shí)現(xiàn)整型數(shù)據(jù)加法的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C++11中std::function與std::bind的用法實(shí)例
大家都知道C++11中增加了許多的新特性,下面這篇文章主要給大家介紹了關(guān)于C++11中std::function與std::bind的用法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05數(shù)據(jù)結(jié)構(gòu)之紅黑樹(shù)詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之紅黑樹(shù)詳解,紅黑樹(shù)是一種自平衡二叉查找樹(shù),它的統(tǒng)計(jì)性能要好于平衡二叉樹(shù)(AVL樹(shù)),因此,紅黑樹(shù)在很多地方都有應(yīng)用,需要的朋友可以參考下2014-08-08如何用C語(yǔ)言、Python實(shí)現(xiàn)棧及典型應(yīng)用
本文先通過(guò)實(shí)例分別介紹了如何用C語(yǔ)言、Python實(shí)現(xiàn)棧,后又介紹棧的典型應(yīng)用,對(duì)大家學(xué)習(xí)棧很有借鑒參考價(jià)值,下面一起來(lái)看看吧。2016-08-08用C++實(shí)現(xiàn)單向循環(huán)鏈表的解決方法
本篇文章是對(duì)用C++實(shí)現(xiàn)單向循環(huán)鏈表的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05