C語言 C語言讀取十六進製制檔案 hex

2021-06-05 00:09:57 字數 2177 閱讀 4250

// 讀取十六進製制檔案(main.hex),並將其按hex格式規定,對不同格式域進行劃分

// 將劃分後的格式寫入main.txt檔案,根據hex格式,對響應的flash儲存單元賦值

// 將flash儲存單元寫入main_formated.txt中

// 請將main.hex放在改程式的統一目錄下

#include #include #define flashvolum 16 //flash的容量,以k為單位

void formattran(char *dst,const char *src);

int hextodec(char *src);

void tranhex(char *flashbuffer,char *formatcmd,int flashsize);

void printflash(char *flashbuffer,int flashsize);

void writeflashtofile(char *flashbuffer,char *filename,int flashsize);

char *extrasubstr(const char *src,int startindex,int len);

void main()

memset(flashbuffer,'f',flashsize);//將flash初始時全部清1

fp=fopen("main.hex","r");

resultfp=fopen("main.txt","w");

if(resultfp==null||fp==null)

while(fscanf(fp,"%s",buffer)!=eof)

printflash(flashbuffer,2*1024);//僅顯示前2k的內容

writeflashtofile(flashbuffer,"main_formated.txt",2*1024);//將前2k的內容寫入檔案"main_formated.txt"中

//釋放記憶體

free(buffer);

free(trsbuffer);

free(flashbuffer);

//關閉檔案

fclose(fp);

fclose(resultfp);

/* //hextodex()函式測試**

char *src=malloc(sizeof(char)*5);

int value;

src[0]='2';src[1]='f';src[2]='1';src[3]='f';src[4]='\0';

value=hextodec(src);

printf("the value of the hex string:%d",value);

*//*

//extrasubstr()函式測試**

char *src=":10003000758180121086d2a400000000c2a40000c6";

char *substr;

substr=extrasubstr(src,1,2);

printf("substring:%s\n",substr);

printf("change to number:%d",hextodec(substr));*/}

void tranhex(char *flashbuffer,char *formatcmd,int flashsize)

if(formatcmd[0]!=':')

if(strlen(formatcmd)<11)

count=hextodec(extrasubstr(formatcmd,1,2));//獲得資料單元長度

startadd=2*hextodec(extrasubstr(formatcmd,3,4));//獲得起始位址

if(strlen(formatcmd)<11+count*2)

for(p=0;p='0')

else if(src[i]<='f'&&src[i]>='a')else

}return value;//返回轉換後的數值

}char *extrasubstr(const char *src,int startindex,int len)

if(strlen(src)

原hex檔案內容:

去除hex格式後,得到響應flash儲存單元中的內容:

Bin檔案轉換為十六進製制 C語言

在coding過程中經常需要把某檔案load到ic的ram中。此時需要把檔案轉換為16進製制數,利用i2c spi等介面進行load操作。由於在coding過程中,檔案轉換成的十六進製制數常常以標頭檔案的形式被呼叫,所以直接將 輸出樣式寫成標頭檔案的形式。功能 將檔案轉換為十六進製制數 用法 如果定...

C語言 十進位制十六進製制轉換

乙個朋友提到十進位制數轉十六進製制後以字串輸出,基於此寫了兩段 以供參考,其中涉及陣列成員反轉,指標等特別基礎的用法。僅娛樂。include stdio.h include string.h include stdlib.h include limits.h define max size 100i...

c 十六進製制加法 C 十六進製制巨集的用法

流行的用法 用二進位制的每一位代表一種狀態。001,010,100這樣就表示三種狀態。通過或 運算就可以組合各種狀態。001 010 011 001 010 100 111 通過與 運算可以去除某種狀態。111 001 110 可以定義這樣的巨集組合成函式的引數 define p1 0x001l 0...