// 讀取十六進製制檔案(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...