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

來源:互聯網
上載者:User

HEX檔案和BIN檔案是我們經常碰到的2種檔案格式。下面簡單介紹一下這2種檔案格式的區別:

 

Intel HEX檔案是由一行行符合Intel HEX檔案格式的文本所構成的ASCII文字檔。在Intel HEX檔案中,每一行包含一個HEX記錄。
這些記錄由對應機器語言碼和/或常量資料的十六進位編碼數字組成。Intel HEX檔案通常用於傳輸將被存於ROM或者EPROM中的程式
和資料。大多數EPROM編程器或模擬器使用Intel HEX檔案。

1 - HEX檔案是包括地址資訊的,而BIN檔案格式只包括了資料本身
         在燒寫或下載HEX檔案的時候,一般都不需要使用者指定地址,因為HEX檔案內部的資訊已經包括了地址。而燒寫BIN
         檔案的時候,使用者是一定需要指定地址資訊的。
        
        
3 - BIN檔案格式
         對二進位檔案而言,其實沒有”格式”。檔案只是包括了純粹的位元據。
        
        
4 - HEX檔案格式
         HEX檔案都是由記錄(RECORD)組成的。在HEX檔案裡面,每一行代表一個記錄。記錄的基本格式為:
         +---------------------------------------------------------------+
         |   RECORD  | RECLEN |  LOAD  | RECTYPE | INFO or DATA | CHKSUM |
         |  MARK ':' |        | OFFSET |         |              |        |
         +---------------------------------------------------------------+
         |  1-byte   | 1-byte | 2-byte | 1-byte  |    n-byte    | 1-byte |
         +---------------------------------------------------------------+
        
         記錄類型包括:
         '00' Data Rrecord:用來記錄資料,HEX檔案的大部分記錄都是資料記錄
         '01' End of File Record: 用來標識檔案結束,放在檔案的最後,標識HEX檔案的結尾
         '04' Extended Linear Address Record: 用來標識擴充線性地址的記錄
         '02' Extended Segment Address Record: 用來標識擴充段地址的記錄
        
         在上面的後2種記錄,都是用來提供地址資訊的。每次碰到這2個記錄的時候,都可以根據記錄計算出一個“基”地址。
         對於後面的資料記錄,計算地址的時候,都是以這些“基”地址為基礎的。
        
         資料記錄的具體格式:
         +---------------------------------------------------------------+
         |   RECORD  | RECLEN |  LOAD  | RECTYPE | INFO or DATA | CHKSUM |
         |  MARK ':' |        | OFFSET |  '00'   |              |        |
         +---------------------------------------------------------------+
         |  1-byte   | 1-byte | 2-byte | 1-byte  |    n-byte    | 1-byte |
         +---------------------------------------------------------------+        
        
         看個例子:
        :020000040000FA
        :10000400FF00A0E314209FE5001092E5011092E5A3
        :00000001FF        
      
        對上面的HEX檔案進行分析:
        第1條記錄的長度為02,LOAD OFFSET為0000,RECTYPE為04,說明該記錄為擴充段地址記錄。資料為0000,校正和為
        FA。從這個記錄的長度和資料,我們可以計算出一個基地址,這個地址為0X0000。後面的資料記錄都以這個地址為基
        地址。
        第2條記錄的長度為10(16),LOAD OFFSET為0004,RECTYPE為00,說明該記錄為資料記錄。
        資料為FF00A0E314209FE5001092E5011092E5,共16個BYTE。這個記錄的校正和為A3。此時的基地址為0X0000,加上OFFSET,
        這個記錄裡的16BYTE的資料的起始地址就是0x0000 + 0x0004 = 0x0004.
        第3條記錄的長度為00,LOAD OFFSET為0000,TYPE = 01,校正和為FF。說明這個是一個END OF FILE RECORD,標識
        檔案的結尾。
      
        在上面這個例子裡,實際的資料只有16個BYTE:FF00A0E314209FE5001092E5011092E5,其起始地址為0x4
          

4 - HEX檔案和BIN檔案大小有區別
     HEX檔案是用ASCII來表示二進位的數值。例如一般8-BIT的位元值0x3F,用ASCII來表示就需要分別表示字元'3'
     和字元'F',每個字元需要一個BYTE,所以HEX檔案需要 > 2倍的空間。
     對一個BIN檔案而言,你查看檔案的大小就可以知道檔案包括的資料的實際大小。而對HEX檔案而言,你看到的檔案
     大小並不是實際的資料的大小。一是因為HEX檔案是用ASCII來表示資料,二是因為HEX檔案本身還包括別的附加資訊。
     另外HEX對於那些中間空白地區會忽略除非填充資料;但是BIN就會全部填充。
比如你的單片機空間128kB,你在定義一個常量位元組資料放到最後,那麼BIN實際大小就必須128kB那麼大了;而Hex中間沒有定義資料的地方就是空的,不會生產記錄。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.