HEX 和 BIN 文件区别
两者都是单片机烧录常用文件,BIN 是纯二进制原始数据,HEX 是带地址、校验的文本格式。
1.BIN(Binary,二进制文件)
- 内容:就是芯片 Flash 里实实在在的原始二进制机器码,只有数据,没有地址信息。
- 格式:二进制,不是文本,记事本打开是乱码。
- 地址规则:文件第一个字节对应烧录起始地址,整个文件连续存放。
- 大小:等于实际数据字节数。例如代码占用 10KB,bin 文件就是 10KB。
- 烧录工具:必须手动指定烧录起始地址,工具不知道该写到 Flash 哪个位置。
✅优点:体积最小,直接镜像,解析速度快。 ❌缺点:不带地址、校验;不能存在多个不连续存储块。
2.HEX(Intel‑HEX,英特尔十六进制文件)
- 内容:ASCII 文本格式,可以用记事本直接打开阅读,每一行记录:长度、起始地址、数据、校验和。
- 自带地址信息:每段数据标明该写到 Flash 哪个地址,烧录软件自动解析地址,不需要手动填起始地址。
- 支持不连续地址:Flash 中多段分散的代码,HEX 可以完整保存;BIN 做不到。
- 自带校验,烧录时可以做简单校验防出错。
- 文件体积:比 BIN 大很多,1 字节原始数据会变成 2 个 ASCII 十六进制字符,再加行头地址校验。
✅优点:自带地址、校验,支持多段非连续存储,烧录不易出错。 ❌缺点:文件更大,需要工具解析。
核心对比表
表格
| 项目 | BIN | Intel‑HEX |
|---|---|---|
| 文件类型 | 二进制 | ASCII 文本 |
| 地址信息 | 无,依赖外部指定 | 内置每行地址 |
| 校验 | 无 | 每行带校验和 |
| 多段不连续数据 | 不支持 | 支持 |
| 文件大小 | 最小 | 更大 |
| 打开查看 | 乱码 | 记事本可读 |
| 烧录 | 必须设置起始地址 | 自动识别地址 |
实际工程场景
- STM32、PY32 等 MCU:
- Keil/IAR 既可以输出 HEX 也可以输出 BIN;
- 下载器如 ST‑Link 烧录 HEX 最省事,不用管地址;
- BIN 多用于 OTA 升级、固件拷贝,需要自己记住固件存放地址。
- 转换:工具可以互相转换
hex2bin/bin2hex,bin 转 hex 必须给定起始地址。
举个通俗例子
- BIN:一袋子数据,只知道内容,不知道该放到内存哪个位置,需要人告诉它放哪。
- HEX:带标签的袋子,每一块数据都写好了 “该放到哪个地址”,工具自己就知道放哪里。
注意:还有 Motorola‑SREC (S19),功能类似 HEX,只是格式不同,不常用。

浙公网安备 33010602011771号