.hex文件和.bin文件区别

2023-05-16

HEX文件和BIN文件是我们经常碰到的2种文件格式。因为自己也是新手,所以一直对这两个文件懵懵懂懂,不甚了解,最近在做STM32单片机的IAP更新,其中要考虑HEX文件和BIN文件,所以需要学习下这两种文件。下面是最近的我的了解,如有不对地方还请指正。

1. HEX文件是包括地址信息的,而BIN文件格式只包括了数据本身
    在烧写或下载HEX文件的时候,一般都不需要用户指定地址,因为HEX文件内部的信息已经包括了地址。而烧写BIN文件的时候,用户是一定需要指定地址信息的。

2. HEX文件格式
    HEX文件都是由记录(RECORD)组成的。在HEX文件里面,每一行代表一个记录。以下为记录(Record)的具体格式:

 Record structure

  A record (line of text) consists of six fields (parts) that appear in order from left to right:

  1. Start code, one character, an ASCII colon ':'.
  2. Byte count, two hex digits, indicating the number of bytes (hex digit pairs) in the data field. The maximum byte count is 255 (0xFF). 16 (0x10) and 32 (0x20) are commonly used byte counts.
  3. Address, four hex digits, representing the 16-bit beginning memory address offset of the data. The physical address of the data is computed by adding this offset to a previously established base address, thus allowing memory addressing beyond the 64 kilobyte limit of 16-bit addresses. The base address, which defaults to zero, can be changed by various types of records. Base addresses and address offsets are always expressed as big endian values.
  4. Record type (see record types below), two hex digits, 00 to 05, defining the meaning of the data field.
  5. Data, a sequence of n bytes of data, represented by 2n hex digits. Some records omit this field (n equals zero). The meaning and interpretation of data bytes depends on the application.
  6. Checksum, two hex digits, a computed value that can be used to verify the record has no errors.



     看个例子:
     :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。

3. BIN文件格式
    对二进制文件而言,其实没有”格式”。文件只是包括了纯粹的二进制数据。

4. HEX文件是用ASCII来表示二进制的数值。例如一般8-BIT的二进制数值0x3F,用ASCII来表示就需要分别表示字符'3'和字符'F',每个字符需要一个BYTE,所以HEX文件需要 > 2倍的空间。
    对一个BIN文件而言,你查看文件的大小就可以知道文件包括的数据的实际大小。而对HEX文件而言,你看到的文件 大小并不是实际的数据的大小。一是因为HEX文件是用ASCII来表示数据,二是因为HEX文件本身还包括别的附加信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.hex文件和.bin文件区别 的相关文章

  • Swift 中的二进制到十六进制

    我有一个二进制字符串 例如 00100100 我想要十六进制字符串 例如 24 Swift 中是否有一种将二进制转换为十六进制的方法 一个可能的解决方案 func binToHex bin String gt String binary t
  • C# 十六进制转ascii

    我正在尝试使用以下命令将十六进制字符串转换为 ASCII public void ConvertHex String hexString StringBuilder sb new StringBuilder for int i 0 i lt
  • 十六进制字符串到文本的转换 - swift 3

    我正在尝试将十六进制字符串转换为文本 这就是我所拥有的 Str to Hex func strToHex text String gt String let hexString text data using utf8 map String
  • 如何将十六进制字符串转换为无符号字符数组?

    例如 我有一个cstring E8 48 D8 FF FF 8B 0D 包括空格 需要转换为等效的 unsigned char 数组 0xE8 0x48 0xD8 0xFF 0xFF 0x8B 0x0D 什么是有效的方法来做到这一点 谢谢
  • Python ord 函数中的多个字符

    编程初学者在这里 Python 2 7 是否有解决方法可以在 Python 的 ord 函数中使用多个字符 例如 我有一个十六进制字符串 xff x1a 我想要它的十进制值 以便我可以将其与其他十六进制字符串求和 但是 ord 只接受单个十
  • 将字符串编码为十六进制

    我有将字符串转换为十六进制的函数 function encode str str encodeURIComponent str split join return str toLowerCase example 守护村子 alert enc
  • Symfony v4、php bin/console 无法按预期工作。自动中止[重复]

    这个问题在这里已经有答案了 我刚刚在我的新 SSD 上安装了 Composer php apache 等 之后我想开始编码 我从 IDE 中的另一个驱动器打开了我的项目 然后我想将我的灯具加载到我的新数据库中 但我不能 我什至无法进行迁移等
  • 哪些脚本会进入 Python 包的 bin 文件夹?

    我正在从 Learn Python the Hard Way 及其中提到的练习之一中学习 Python 包 在bin目录下放置一个可以运行的脚本 对我来说 这似乎有点模糊 我不太确定 bin 文件夹中会包含什么样的脚本 搭便车者的包装指南
  • Hexfloat机械手和精度

    如何使用输出hexfloat操纵器忽略任何精度ostream include
  • 双倍到十六进制字符串并返回

    在 Java 中将双精度数转换为十六进制字符串相当简单 但我该如何做相反的事情呢 我的代码如下 我已经注意到其中NumberFormatException被抛出 大约 2 3 向下 public class HexToDoubleTest
  • 如何在 Swift 中将十六进制数转换为 bin?

    我有字符串变量 var str 239A23F 如何将该字符串转换为二进制数 str toInt 不起作用 您可以使用NSScanner 来自基金会框架 let scanner NSScanner string str var result
  • C 中的十六进制到字符数组

    Given a string of hex values i e e g 0011223344 so that s 0x00 0x11 etc 如何将这些值添加到 char 数组 相当于说 char array 4 0x00 0x11 您无
  • 如何将 ASCII 字符的十六进制值写入文本文件?

    这是我目前所拥有的 void WriteHexToFile std ofstream stream void ptr int buflen char prefix unsigned char buf unsigned char ptr fo
  • 如何获取十六进制02的STX字符

    我有一个设备试图通过套接字连接 根据手册 我需要 十六进制 02 的 STX 字符 我如何使用 C 来做到这一点 只是对 GeoffM 的答案的评论 我没有足够的观点来以正确的方式发表评论 您绝对不应该仅使用两位数字来嵌入 STX 或其他字
  • QSpinBox 具有用于十六进制输入的 Unsigned Int

    这里写了很多关于 QSpinBox 使用 int 作为其数据类型的限制的问题 人们通常希望显示更大的数字 就我而言 我希望能够以十六进制显示无符号 32 位整数 这意味着我希望我的范围为 0x0 0xFFFFFFFF 正常的 QSpinBo
  • 在 strings.xml 中存储十六进制颜色值

    我正在尝试存储hex colorstrings xml 中我的文本的值 因此所有布局文件都将引用该值 以便能够轻松快速更改项目的所有布局文本 但是我在引用它时遇到了麻烦 Using android textColor FFFFFF 在我的
  • 如何将十六进制字符串转换为十六进制数字[重复]

    这个问题在这里已经有答案了 可能的重复 如何将十六进制字符串转换为有符号整数 https stackoverflow com questions 3705429 how do i convert hex string into signed
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • 如何从 NSString 中删除十六进制字符

    我面临一个与字符串中的某些十六进制值相关的问题 我需要从字符串中删除十六进制字符 The problem is when i print object it prints as BLANK line And in debug mode it
  • 使用Python将图像转换为十六进制格式

    我的下面有一个jpg文件tmp folder upload path tmp resized test jpg 我一直在使用下面的代码 Method 1 with open upload path rb as image file enco

随机推荐

  • 多目标跟踪-MOT16数据集格式介绍

    背景介绍 多目标跟踪的问题是这样的 xff1a 有一段视频 xff0c 视频是由 N 个 连续帧构成的 从第一帧到最后一帧 xff0c 里面有多个目标 xff0c 不断地有出有进 xff0c 不断地运动 我们的目的是对每个目标 xff0c
  • opencv-python的格式转换 RGB与BGR互转

    opencv读取图片的默认像素排列是BGR xff0c 和很多其他软件不一致 xff0c 需要转换 这里转一下国外博客的一个方法 xff0c 基于python语言 BGR to RGB OpenCV image to Matplotlib
  • np.maximum()函数详解——将数组中小于某值的数用0代替

    目标 xff1a 把数组中小于某个值的数都设为0 np max a axis 61 None out 61 None keepdims 61 False 求a中的最大值 np maximum xff1a a b out 61 自定义 a 与
  • python-opencv 使用LBP特征检测人脸

    概述 最近在做人脸检测相关功能 xff0c 目前注意到比较传统 xff08 非深度 xff09 人脸检测特征包括harr和LBP HOG用于行人检测更多些 xff0c opencv包括了这两种特征算法 xff0c 并且相对来说 xff0c
  • 机器视觉特征提取介绍:HOG、SIFT、SURF、ORB、LBP、HAAR

    一 概述 这里主要记录自己的一些感悟 xff0c 不是很系统 想要详细系统的理论 xff0c 请参考文末的 图像处理之特征提取 个人不是专业cv工程师 xff0c 很多细节没有深究 xff0c 描述可能不严谨 在总结物体检测算法之前先把基础
  • win7 wifi 无Internet访问权限或者有限的访问权限

    自己家的无线路由器 xff0c 手机和笔记本都使用正常 xff0c 但是一台新笔记本连上之后总是提示 有限的访问权限 xff0c 无法连公网 网上的很多办法都不管用 xff0c 什么设置静态IP或者重启路由 xff0c 基本都是瞎扯 好在一
  • springboot 本地调试没问题,打包运行报错原因

    1 如果引用了本地jar包或者so库 xff0c dll库等文件 xff0c 需要在打包的时候都加载进去 如下图 xff1a 本地正常 xff0c 打包的时候谨记 xff0c 需要打包进去 xff0c 怎么验证是否打包成功呢 xff1f 我
  • CMakeList学习笔记

    hello cpp为源文件 构建一个CMakeLists txt cmake minimum required VERSION 2 8 project hello add executable hello hello cpp 在目录中的bu
  • C语言--iota函数

    一 iota函数 xff1a 功能 把一个整数转换为字符串 eg include lt stdlib h gt include lt stdio h gt void main int number 61 43 char string 100
  • STM32F103ZET6和STM32F103C8T6编程不一样吗?

    我把C C 43 43 选项卡中 STM32F10X HD USE STDPERIPH DRIVER 修改为 STM32F10X MD USE STDPERIPH DRIVER 编译成功 谢谢O O 初始化的时候要调用SystemInit
  • STM32F103ZET6和STM32F103C8T6芯片的区别

    是这样的 xff0c 一个具体的STM32F103系列芯片的内存有多大 xff0c 你看一下芯片上的型号就行了 STM32F103XY 注意 xff0c XY是个代号 xff0c X是表示封装有多少个引脚 xff0c 比如 xff0c 如果
  • Keil(MDK-ARM)使用教程——在线调试

    Keil xff08 MDK ARM xff09 使用教程 xff08 三 xff09 在线调试 由于我是直接使用 xff08 打开现有的软件工程 xff09 xff0c 如果跟着需要下载上面演示参考的软件工程 才行 工程默认是使用硬件在线
  • ch340是什么芯片

    CH340 是一个USB 总线的转接芯片 xff0c 实现USB 转串口 USB 转IrDA 红外或者USB 转打印口 在串口方式下 xff0c CH340 提供常用的MODEM联络信号 xff0c 用于为计算机扩展异步串口 xff0c 或
  • Ubuntu16的详细安装教程

    有一点很重要要说一下 xff0c 每个人学习Linux的动机都不一样 xff0c 而这个动机会决定你对Linux的态度 xff0c 如果你仅仅是想尝鲜 xff0c 装个笔什么的 xff0c 不当作自己的职业方向去学习Linux的 劝这类人还
  • 是否能在keil中混合编译c和c++程序

    keil中支持混合编译C和C 43 43 程序 xff0c 因为其本质最终都是编译成汇编 xff0c 所以是可以同时操作的 在混合编译时 xff0c 需要注意以下几点 xff1a 1 C文件扩展名必须为 C xff0c C 43 43 文件
  • ds18b20工作原理和测温原理介绍

    DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器 与传统的热敏电阻相比 xff0c 他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9 xff5e 12位的数字值读数方式 可以分别在9
  • 如何将.hex文件转化为.c文件

    说明楼主太初级 xff0c 迷恋于C 1 C与HEX并不是一一映射的 xff0c 有可能N个人写的C xff0c 会出同一个HEX xff0c 你希望回成哪个人写的呢 xff1f 或许你可能说 xff1a 任意一个孝可以 xff0c 只要能
  • 嵌入式linux 和 用stm32进行的嵌入式开发 这两者之间有什么关联性吗?

    作者 xff1a 知乎用户 链接 xff1a https www zhihu com question 53880054 answer 164501004 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非
  • #if 0 ... #endif的真实用途

    在过去都没有去理会 if 的作用 xff0c 今天突发奇想 xff0c 开启编译器试一试 很多人都知道 if 0 endfif的作用跟 的作用是一样的 xff0c 就是注释 xff0c 可是注释为什么不用注释符号 就行了么 xff1f go
  • .hex文件和.bin文件区别

    HEX文件和BIN文件是我们经常碰到的2种文件格式 因为自己也是新手 xff0c 所以一直对这两个文件懵懵懂懂 xff0c 不甚了解 xff0c 最近在做STM32单片机的IAP更新 xff0c 其中要考虑HEX文件和BIN文件 xff0c