HEX and BIN 的不同

转载自http://bbs.21ic.com/icview-126904-1-1.html

HEX文件和BIN文件是我们经常碰到的2种文件格式。下面简单介绍一下这2种文件格式的区别:

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文件格式,请GOOGLE INTEL HEX,就能找到详细的PDF文档。

时间: 2024-10-11 20:57:34

HEX and BIN 的不同的相关文章

【转】hex和bin文件格式的区别

hex和bin文件格式的区别 Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录,由十六进制数组成的机器码或者数据常量.Intel HEX文件经常被用于将程序或数据传输存储到ROM.EPROM,大多数编程器和模拟器使用Intel HEX文件. 很多编译器的支持生成HEX格式的烧录文件,尤其是Keil c.但是编程器能够下载的往往是BIN格式,因此HEX转BIN是每个编程器都必须支持的功能.HEX格式文件以行为单位,每行由":"(0

python hex() oct() bin() math 内置函数

示例: print hex(20),hex(-20) #转换成十六进制 print oct(20),oct(-20) #转换成八进制 print bin(20),bin(-20) #转换成二进制 print int("字面值", 进制) #转换整型 print float("字面值") #转换浮点型 print round(浮点型) #浮点型四舍五入 math方法: math.pi = π   值3.141592653 math.pow(2,4) = 16 2的4次

BIN、HEX,ELF,AXF文件的区别

嵌入式软件开发中文件格式 1.Bin Bin文件是最纯粹的二进制机器代码, 或者说是"顺序格式".按照assembly code顺序翻译成binary machine code,内部没有地址标记.Bin是直接的内存映象表示,二进制文件大小即为文件所包含的数据的实际大小. BIN文件就是直接的二进制文件,一般用编程器烧写时从00开始,而如果下载运行,则下载到编译时的地址即可.可以直接在裸机上运行. 2.Hex Intel hex 文件常用来保存单片机或其他处理器的目标程序代码.它保存物理

HEX文件和BIN文件格式的区别

在单片机开发中HEX文件和BIN文件是非常常见的烧写文件格式,以常用开发环境Keil为例,分别创建HEX和BIN文件,比如: 1.创建HEX:在Keil里面可以通过勾选[魔法棒>Output>Creat HEX File]让工程输出HEX文件. 2.创建BIN:在Keil中在[魔法棒>User>After Build/Rebuild]标签下勾选Run #1,同时在其对应的User Command文本框中输入 fromelf --bin [email protected] !L 编译

PHP hex文件及bin文件读取

背景:做物联网时经常会有软件上传这种操作,上传的软件包文件常见的是hex和bin这两种. 一 hex文件读取 1 首先我们需要了解hex文件内容格式 (图及下面说明来自网络,侵权必删) :(冒号)每个Intel HEX 记录 都由冒 号开头 : LL 是 数 据 长 度域, 它 代表 记录当 中 数 据字 节 (dd) 的 数量 : aaaa 是地址域, 它代表 记录当 中 数据的起始地址: TT是代表HEX 记录类 型的域 , 它 可能是以下 数 据 当 中的一 个: 00 – 数 据 记录(

固件空中升级(OTA)与固件二次引导的原理和设计

蓝牙固件空中升级(OTA)涉及到蓝牙无线通信.固件外存分布.固件内存分布(定制链接脚本).固件二次引导等技术,须要开发者深入理解蓝牙单芯片的存储架构.启动引导流程.外存设备驱动和产品电路设计等领域知识.完整和完美地设计和实现OTA,是一名嵌入式物联网软件project师最好的技术体现. 本文以Dialog公司研发的号称全球最低功耗蓝牙单芯片DA14580平台为基础进行分析和设计,但设计思想能够推广到其它蓝牙单芯片平台,甚至也适用于wifi固件空中升级. 一.OTA意义 固件空中升级是如此重要,在

SoC嵌入式软件架构设计之五 :可执行程序的重构

低端控制器对执行效率要求很高,成本敏感,因而SoC内置SRAM是紧缺资源.代码分块管理就是为了充分利用内存,提高内存的复用效率而提出的一种设计方法.代码分块管理不仅涉及到硬件,同样对操作系统和应用.驱动的设计都有要求,这些模块共同努力以使执行效率达到最高. 本节讲述代码分块(Bank)管理思想下可执行文件的重构,即对程序编译后的可执行文件进行重新组织.打包,以在加载阶段获得最高的执行效率,减少内存占用.要使执行效率高,意味着可执行文件的格式尽可能简单,解析执行文件的流程简单,相应地,解析过程代码

Python学习笔记(四)

一.内置函数 数学运算 abs(-5)                          # 取绝对值,也就是5 round(2.6)                       # 四舍五入取整,也就是3.0 pow(2, 3)                        # 相当于2**3,如果是pow(2, 3, 5),相当于2**3 % 5 cmp(2.3, 3.2)                    # 比较两个数的大小 divmod(9,2)                  

python核心编程--笔记

python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   冗余输出(导入语句详细追踪) 1.5 –m mod 将一个模块以脚本形式运行 1.6 –Q opt 除法选项(参阅文档) 1.7 –c cmd 运行以命令行字符串心事提交的python脚本 1.8 file   以给定的文件运行python脚本 2 _在解释器中表示最后