轉一段關於hex檔案格式的文章

2021-06-15 22:38:18 字數 2022 閱讀 1798

intel hex

檔案是記錄文字行的ascii文字檔案,在intel hex檔案中,每一行是乙個hex記錄,由十六進製制數組成的機器碼或者資料常量。intel hex檔案經常被用於將程式或資料傳輸儲存到rom、eprom,大多數程式設計器和模擬器使用intel hex檔案。

hex格式檔案以行為單位,每行由「:」(0x3a)開始,以回車鍵結束(0x0d,0x0a)。行內的資料都是由兩個字元表示乙個16進製制位元組,比如」01」就表示數0x01;」0a」,就表示0x0a。對於16位的位址,則高位在前低位在後,比如位址0x010a,在hex格式檔案中就表示為字串」010a」。下面為hex檔案中的一行:

:10000000ff0462ff051eff0a93ff0572ff0a93ffbc

「:」表示一行的開始。

「:」後的第1,2個字元「10」表示本行包含的資料的長度,這裡就是0x10即16個。

第3,4,5,6個字元「0000」表示資料儲存的起始位址,這裡表示從0x0000位址開始儲存16個資料,其中高位位址在前,低位位址在後。

第7,8個字元「00」表示資料的型別。該型別總共有以下幾種:

00 ----

資料記錄

01 ----檔案結束記錄

02 ----擴充套件段位址記錄

04 ----擴充套件線性位址記錄

這裡就是0x00即為普通資料記錄。

自後的32個字元就是本行包含的資料,每兩個字元表示乙個位元組資料,總共有16個位元組資料跟行首的記錄的長度相一致。

最後兩個字元表示校驗碼。

每個hex格式的最後一行都是固定為:

:00000001ff

以上的資訊其實就足夠進行hex轉bin格式的程式的編寫。首先我們只處理資料型別為0x00及0x01的情況。0x02表示對應的儲存位址超過了64k,由於我的程式設計器只針對64k以下的微控制器,因此在次不處理,0x04也是如此。

我的程式設計思路是從檔案中乙個乙個讀出字元,根據「:」判斷一行的開始,然後每兩個字元轉換成乙個位元組,並解釋其對應的意義。然後將資料從該行中剝離出來儲存到緩衝區中,並最終輸出到檔案中。

具體程式如下,該程式在vc2005下採用控制台專案編譯,需要在release下編譯,在debug模式中會提示乙個dll檔案無法找到,這可能是vc自身的錯誤。

// hextobin.cpp :

定義控制台應用程式的入口點。 //

#i nclude "stdafx.h"

#i nclude

#i nclude

typedef unsigned char byte; //

將兩個字元轉化為乙個位元組量

void chartobyte(char* pchar,byte* pbyte)

int _tmain(int argc, _tchar* argv)

//將檔案長度計算出來用於申請儲存資料的緩衝區

while (!feof(myfile))

rewind(myfile);

//因為是每兩個字元表示乙個位元組,所以最大的資料個數要少於檔案字元個數的一半

outbuf = (byte*)malloc(len/2);

memset(outbuf,0xff,len/2);

while (!feof(myfile))

totallen += datalen;}//

當資料型別為時,表示到了最後一行

if (datatype == 0x01)

//當資料型別為時,表示本行包含的是擴充套件段位址記錄

if (datatype == 0x02)

//當資料型別為時,表示本行包含的是擴充套件線性位址記錄

if (datatype == 0x04) }}

fclose(myfile);

printf("

請輸入儲存的bin格式檔案名:");

scanf_s("%s",filename);

if (fopen_s(&myfile,filename,"w") != 0)

for (i=0;i

return 0;

}

HEX檔案和BIN檔案格式的區別

hex檔案和bin檔案格式的區別 hex檔案和bin檔案是我們經常碰到的2種檔案格式。下面簡單介紹一下這2種檔案格式的區別 1 hex檔案是包括位址資訊的,而bin檔案格式只包括了資料本身。2 bin檔案格式 對二進位制檔案而言,其實沒有 格式 檔案只是包括了純粹的二進位制資料。3 hex檔案格式 ...

HEX檔案和BIN檔案格式的區別

在微控制器開發中hex檔案和bin檔案是非常常見的燒寫檔案格式,以常用開發環境keil為例,分別建立hex和bin檔案,比如 1 建立hex 在keil裡面可以通過勾選 魔法棒 output creat hex file 讓工程輸出hex檔案。2 建立bin 在keil中在 魔法棒 user aft...

彎曲評論上關於SOC的一段文章 整理

進行了熱烈的討論。這個文章本無關乎soc,不過,有業界同仁willchen將話題引到了soc上,並發表了一番言論 整理如下 btw,看著willchen的文字,讓我想到了segelo soc是所有安全售前的痛。其實不只是soc,安全審計平台也是能把所有產品很好串起來,並形成技術壁壘的好東西。可惜我在...