前言

hex转bin文件网上有很多现成的工具,但还是想了解下其中的数据结构跟原理

区别

hex跟bin都是程序烧写的文件,那他们有什么不同呢?

首先看大小,hex文件都会大于bin文件,hex文件打开可以看到一堆数字,而bin文件只会得到一堆乱码。

其实bin文件就是你程序执行文件的二进制文件,里面可以看做都是机械码,芯片可以直接运行的

hex文件不但包含bin文件的内容(需要自己转),还有具体内容存放地址,程序运行开始位置等。所以我们用烧录器烧程序都需要用hex而不是bin,因为bin没有程序具体烧录地址的位置。

分析

首先我们随便用记事本打开一个hex文件,可以看到

其格式表示为:

起始 本行数据长度 偏移量 数据类型 数据 校验码
:(冒号) len load offset type data checksum
  • 以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)

其中数据类型有:0x00、0x01、0x02、0x03、0x04、0x05。

'00' Data Rrecord:                                  用来记录数据,HEX文件的大部分记录都是数据记录

'01' End of File Record:                            用来标识文件结束,放在文件的最后,标识HEX文件的结尾

'02' Extended Segment Address Record:用来标识扩展段地址的记录

'03' Start Segment Address Record:       开始段地址记录

'04' Extended Linear Address Record:    用来标识扩展线性地址的记录

'05' Start Linear Address Record:           开始线性地址记录

如上图第一行(所有的数字两个为一个字节,要以16进制的方式去看。但是其存在文本是以ascii去存放的),

:020000040801F1

:   表示这一行的数据起始位

02: 表示这一行的数据有两个字节的长度(其中08为一个,01为一个)

0000  表示偏移值

04   表示数据类型,看上面列出的5种。04--标识扩展线性地址的记录,

官方文档解释为32位扩展线性地址记录用于指定线性基址的位16-31

0801 表示数据内容,这里表示具体的扩展线性地址的值为0x0801

F1  是校验位,运算规则是 0x100 - 前面除冒号所有16进制累加和

这里就为 0x100 - ((0x02+0x00+0x00+0x04+0x08+0x01)&0xff) = 0xf1

综合来看,这一行表示将地址指向0x08010000的地址,后面的所有操作就会根据这个地址来存放数据。注意这里的偏移值0000是无用的,我说的0x08010000是因为高16位为0x0801,而后面数据存放的具体低16位要看那个数据的偏移值。

看原文解释:

分析第二行

:1000000010380120AD010108B5010108B302010853

10  表示数据长度16字节

0000   偏移量

00      表示这是数据记录

10380120AD010108B5010108B3020108   具体的数据(这里的数据都是低位在前高位在后)

53  校验

这一行表示将数据存放在基于0x08010000地址,连续16个。其中0x08010就是上面第一行定义的高16位字节值,0000是这里所代表的偏移值

在文件最后的地方,还会有这么两行数据

:040000050801018964
 :00000001FF

同样来分析

第一个,直接看类型为05,表示开始线性地址记录,通俗来说就是你main函数的程序入口,具体为0x08010189。大家可以去翻一下自己程序map文件main的地址跟自己hex对比看看

第二个,直接看类型为01,表示标识HEX文件的结尾,看到这个就可以结束读取hex文件了。后面一般也不会再有内容(有也当看不到)

剩下还有数据类型02 03

02 跟 04是差不多的作用。有一点差别就是02表示16位扩展段地址记录用于指定段基址的位4-19

03跟 05也是差不多。

所有的数据类型具体可以看hex格式详解

根据上面整理的内容做了一份hex转bin的程序(C语言,压缩包包含hex格式详解)

积分支持下载(点我)

百度云分享:

链接:https://pan.baidu.com/s/1WeddHCokAVscsDvrM6htCA 
提取码:a1b2

有疑问可以评论反馈

hex文件格式解析,hex转bin(C语言)相关推荐

  1. hex文件格式解析_玩转Hex文件

    00 关于Hex Hex文件格式(本文讲的是Intel Hex)是好多好多年以前定义的格式,解析这文件的工具网上搜出来的也是一大摞一大摞的.记住,我们就别瞎折腾自己写一个了哦.我们要学会站在巨人的肩膀 ...

  2. HEX文件格式解析(转)

    Hex格式文件有两种,一种是Intel的Intel HEX,另一种是Motorola(摩托罗拉)的SREC(又称MOT). Intel HEX 文件是由一行行符合Intel HEX 文件格式的文本所 ...

  3. 单片机进阶 --------hex文件格式

    hex文件格式 hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式,生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex. 中文名 hex文件格式 所属学科 ...

  4. S19文件和HEX文件解析

    目录 一.S19文件解析: 1.记录类型 2.长度计算 3.地址 4.数据 5.校验和及计算 二.HEX文件解析 1.记录类型 2.起始地址 3.数据长度 4.校验和 一.S19文件解析: S19文件 ...

  5. c语言解析hex文件格式,HEX文件格式,ihex,hex解析

    来自:http://blog.csdn.net/GZFStudy/archive/2008/09/03/2873814.aspx Intel HEX 文件是由一行行符合Intel HEX 文件格式的文 ...

  6. BIN,S19,M0T,SREC,HEX文件解析;FileParse(二)之源码解析

    简介 一.摘要 1.描述 2.关键字 二.为何选择C#解析 三.BIN文件解析 四.BIN文件生成 五.S19,M0T,SREC文件解析 六.S19,M0T,SREC文件生成 七.HEX文件解析 八. ...

  7. BIN,S19,M0T,SREC,HEX文件解析;FileParse(一)之文件详解

    简介 一.摘要 1.描述 2.关键字 二.为什么要文件解析 三.BIN文件格式 四.S19,M0T,SREC文件格式 五.HEX文件格式 六.源码下载 七.其他 八.参考 一.摘要 1.描述 本文主要 ...

  8. hex文件格式剖析,以及hex与bin文件互相转换

    大家好,我是学电子的小白白. 熟悉单片机开发的朋友,应该经常见到*.hex后缀的文件,它是单片机和嵌入式工程编译输出的一种常见的目标文件格式(比如keil就能编译输出hex文件),通过烧写工具把它下载 ...

  9. keil将c语言转换成hex文件格式,如何用keil烧写hex文件格式

    描述 如何将现成的hex文件用keil烧写 开发单片机的第一步就是用Keil软件编写汇编程序,并形成最终的"*.hex"目标文件,然后用编程器将该文件烧写到单片机中就行了,最后将烧 ...

最新文章

  1. C++中基类与派生类的构造函数和析构函数
  2. 柯南变声器的算法实现原理
  3. Spring Cloud Alibaba基础教程:@SentinelResource注解实现限流控制与熔断降级使用详解
  4. stm32 无符号整形_十进制字符串转化为无符号整数
  5. c++ 如何获取移动硬盘型号信息_工程销售,如何高效快速获取项目信息
  6. html有序列表和无序列表
  7. Java多线程详解(如何创建线程)
  8. [20171218]varchar2(4000)如何保存.txt
  9. 计算机在多媒体领域的应用论文题目,多媒体技术论文题目
  10. MFC SetTimer函数的用法
  11. 提高项目39-电子词典
  12. Magick.NET Crack,支持多种文件格式的综合库
  13. Redis 增加互斥锁
  14. 能模仿韩寒小四写作的神奇循环神经网络
  15. SAP采购中若干价格表的梳理
  16. php微信商家分账API
  17. 算法(arithmetic)
  18. 75道程序员面试逻辑思维题及答案解析
  19. Window alert() 方法
  20. 学好编程的 4 个秘诀

热门文章

  1. 阮幼林 计算机软件技术基础,阮幼林(信息学院)老师 - 武汉理工大学 - 院校大全...
  2. redis 监控指标
  3. 直接写出php二维数组一个值,直接取PHP二维数组里面的值
  4. 如何在Linux终端中展示幻灯片
  5. 出售中文版webgame程序,有后台,带商业功能,可演示
  6. Swift3.0从入门到放弃(二)
  7. sublime text 小技巧
  8. 一首非常不错的歌曲《曾经最美》很棒!
  9. swift 原色图片
  10. POI操作word合并单元格