当前位置:文档之家› 二进制与十六进制文件区别

二进制与十六进制文件区别

二进制文件英文:Binary files - 包含在 ASCII 及扩展 ASCII 字符中编写的数据或程序指令的文件。

计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本)文件,图形文件及文字处理程序等计算机程序都属于二进制文件。

这些文件含有特殊的格式及计算机代码。

ASCII 则是可以用任何文字处理程序阅读的简单文本文件。

广义的二进制文件即指文件,由文件在外部设备的存放形式为二进制而得名。

狭义的二进制文件即除文本文件以外的文件。

文本文件是一种由很多行字符构成的计算机文件。

文本文件存在于计算机系统中,通常在文本文件最后一行放置文件结束标志。

文本文件的编码基于字符定长,译码相对要容易一些;二进制文件编码是变长的,灵活利用率要高,而译码要难一些,不同的二进制文件译码方式是不同的。

从本质上来说他们之间没有什么区别,因为他们在硬盘上都有一种的存放方式--二进制,但是如果要对他们有些区分的话,那可以这样理解。

我们现在的每个字符由一个或多个字节组成,每个字节都是用的-128—127之间的部分数值来表示的,也就是说,-128——127之间还有一些数据没有对应任何字符的任何字节。

如果一个文件中的每个字节的内容都是可以表示成字符的数据,我们就可以称这个文件为文本文件,可见,文本文件只是二进制文件中的一种特例,为了与文本文件相区别,人们又把除了文本文件以外的文件称为二进制文件,由于很难严格区分文本文件和二进制文件的概念,所以我们可以简单地认为,如果一个文件专门用于存储文本字符的数据,没有包含字符以外的其他数据,我们就称之为文本文件,除此之外的文件就是二进制文件。

十六进制文件Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII 文本文件。

在Intel HEX文件中,每一行包含一个HEX记录。

这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。

Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。

大多数EPROM编程器或模拟器使用Intel HEX文件。

域Intel HEX由任意数量的十六进制记录组成。

每个记录包含5个域,它们按以下格式排列::llaaaatt[dd...]cc每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字。

每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:: 每个Intel HEX记录都由冒号开头.ll 是数据长度域它代表记录当中数据字节(dd)的数量。

aaaa 是地址域它代表记录当中数据的起始地址。

tt 是代表HEX记录类型的域它可能是以下数据当中的一个:00 –数据记录01 –文件结束记录02 –扩展段地址记录04 –扩展线性地址记录dd 是数据域它代表一个字节的数据。

一个记录可以有许多数据字节.记录当中数据字节的数量必须和数据长度域(ll)中指定的数字相符。

cc 是校验和域它表示这个记录的校验和。

校验和的计算是通过将记录当中所有十六进制编码数字对的值相加,以256为模进行以下补足。

编辑本段数据记录Intel HEX文件由任意数量以回车换行符结束的数据记录组成。

数据记录外观如下::10246200464C5549442050524F46494C4500464C3310 是这个记录当中数据字节的数量。

2462 是数据将被下载到存储器当中的地址。

00 是记录类型(数据记录)464C…464C是数据。

33 是这个记录的校验和。

编辑本段扩展线性地址记录(HEX386)扩展线性地址记录也叫作32位地址记录或HEX386记录。

这些记录包含数据地址的高16位。

扩展线性地址记录总是有两个数据字节,外观如下: :02000004FFFFFC其中:02 是这个记录当中数据字节的数量。

0000 是地址域,对于扩展线性地址记录,这个域总是0000。

04 是记录类型 04(扩展线性地址记录)FFFF 是地址的高16位。

FC 是这个记录的校验和,计算方法如下:01h + NOT(02h + 00h + 00h + 04h + FFh + FFh).当一个扩展线性地址记录被读取,存储于数据域的扩展线性地址被保存,它被应用于从Intel HEX文件读取来的随后的记录。

线性地址保持有效,直到它被另外一个扩展地址记录所改变。

通过把记录当中的地址域与被移位的来自扩展线性地址记录的地址数据相加获得数据记录的绝对存储器地址。

编辑本段以下的例子演示了这个过程 1来自数据记录地址域的地址 2462扩展线性地址记录的数据域 + FFFF绝对存储器地址 FFFF2462扩展段地址记录(HEX86)扩展段地址记录也叫HEX86记录,它包括4-19位数据地址段。

扩展段地址记录总是有两个数据字节,外观如下::020*********EA其中:02 是记录当中数据字节的数量。

0000 是地址域.对于扩展段地址记录,这个域总是0000。

02 是记录类型 02(扩展段地址记录)1200 是地址段。

EA 是这个记录的校验和,计算方法如下:01h + NOT(02h + 00h + 00h + 02h + 12h + 00h).当一个扩展段地址记录被读取,存储于数据域的扩展段地址被保存,它被应用于从Intel HEX文件读取来的随后的记录。

段地址保持有效,直到它被另外一个扩展地址记录所改变。

通过把记录当中的地址域与被移位的来自扩展段地址记录的地址数据相加获得数据记录的绝对存储器地址。

以下的例子演示了这个过程来自数据记录地址域的地址 2462扩展段地址记录数据域 + 1200---------绝对存储器地址 00014462文件结束(EOF)记录Intel HEX文件必须以文件结束(EOF)记录结束.这个记录的记录类型域的值必须是01.EOF记录外观总是如下::00000001FF其中:00 是记录当中数据字节的数量.0000 是数据被下载到存储器当中的地址.在文件结束记录当中地址是没有意义被忽略的.0000h是典型的地址.01 是记录类型 01(文件结束记录)FF 是这个记录的校验和,计算方法如下:01h + NOT(00h + 00h + 00h + 01h).Intel HEX文件例子:下面是一个完整的Intel HEX文件的例子::10001C00AD071FED600BE4FEEEC3947850F20E803A:01002C00F7DC:01002D0022B0:100003007CFE8C807FFA12001C7801AF04EF08801D:090013000123D8FDFCF58080EB0F:0300000002002ECD:0C002E00787FE4F6D8FD7581070200031E:00000001FF(PS:这是51单片机“LED流水灯程序”的hex文件)编辑本段HEX文件和BIN文件格式区别HEX文件和BIN文件是我们经常碰到的两种文件格式。

下面简单介绍一下这两种文件格式的区别:1)HEX文件是包括地址信息的,而BIN文件格式只包括了数据本身在烧写或下载HEX文件的时候,一般都不需要用户指定地址,因为HEX文件内部的信息已经包括了地址。

而烧写BIN 文件的时候,用户是一定需要指定地址信息的。

2)BIN文件格式对二进制文件而言,其实没有”格式”。

文件只是包括了纯粹的二进制数据。

3)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 |+---------------------------------------------------------------+4)记录类型包括:'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 | +---------------------------------------------------------------+看个例子::020*********FA :10000400FF00A0E314209FE5001092E5011092E5A3 :0000 0001FF对上面的HEX文件进行分析:第1条记录的长度为02,LOAD OFFSET为0000,RECTYPE为04,说明该记录为扩展段地址记录。

数据为0000,校验和为 FA。

从这个记录的长度和数据,我们可以计算出一个基地址,这个地址为0X0000。

后面的数据记录都以这个地址为基地址。

第2条记录的长度为10(16),LOAD OFFSET为0004,RECTYPE为00,说明该记录为数据记录。

相关主题