Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>Hex++New to Visual Studio Code? Get it now.
Hex++

Hex++

runm

| (0) | Free
Hex viewer / editor / comparer with firmware formats (Intel HEX, S-Record, TI-TXT, ELF, BIN).
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Hex++

面向嵌入式与固件开发的 VS Code 十六进制查看 / 编辑 / 对比工具。 直接打开 Intel HEX、S-Record、TI-TXT、ELF、BIN 固件,按真实地址显示;两个不同格式的固件也能逐字节对比。

A hex viewer, editor and diff tool for VS Code, built for firmware: open Intel HEX / S-Record / TI-TXT / ELF / BIN files at their real addresses, edit them, convert between formats, and compare two images byte by byte. The UI is in Chinese.

Hex++ 查看界面

功能一览

  • 📂 固件格式:BIN、Intel HEX、S-Record、TI-TXT、ELF,按文件中的真实地址显示,地址空洞一目了然
  • 🔢 1 / 2 / 4 字节单元显示,可切换大小端;数据检查器同步显示 Int8–64、Float、Double 等数值
  • 🎯 跳转与查找:十六进制 / 十进制 / 相对地址跳转;Hex(支持通配符)、文本、正则查找
  • ✏️ 编辑:覆盖写入、撤销 / 重做、填充选区,保存时保持原格式
  • 📋 复制为:C / Go / Java 数组、JSON、Base64、Intel HEX 等 13 种格式,带预览
  • 🔄 格式互转:BIN、Intel HEX、S-Record、TI-TXT 任意互转
  • ⚖️ 对比:不同格式也能按地址对比,只看差异、一键跳到下一个差异,可导出 HTML 报告

目录

  • 打开文件
  • 浏览与导航
  • 查找
  • 数据检查器
  • 编辑
  • 复制
  • 另存为 / 格式互转
  • 对比两个文件
  • 快捷键
  • 设置
  • 支持的格式
  • 常见问题

打开文件

Hex++ 提供两种打开方式:

编辑器 说明
Hex++ Editor 可编辑(默认以只读模式打开,按 Insert 切换为读写)
Hex++ Viewer (read-only) 纯只读查看

打开方法:

  1. 在资源管理器中右键文件,选择 用 Hex++ 打开(Open in Hex++)。
  2. 对已经打开的文件:点击编辑器标签右键或命令面板 → 重新打开编辑器的方式…(Reopen Editor With…)→ 选择 Hex++。
  3. 命令面板(Ctrl+Shift+P)→ Hex++: 用 Hex++ 打开。

💡 让某类文件默认用 Hex++ 打开:在 settings.json 中添加

"workbench.editorAssociations": {
  "*.hex": "HexPlusPlus.hexEdit",
  "*.s19": "HexPlusPlus.hexEdit",
  "*.bin": "HexPlusPlus.view"
}

界面组成:

  • 工具栏:跳转框、1 / 2 / 4 字节单元、字节序、只读 / 读写、查找框、检查器、另存为、比较。
  • 网格:左边为地址(0800_0000 格式),中间为十六进制,右边为 ASCII。
  • 状态栏:光标偏移、选区范围与字节数、文件格式、段数、数据大小、地址范围;文件有解析警告时显示 ⚠ N 个解析警告,点击可查看详情。

浏览与导航

字节单元与字节序

点击工具栏的 1 2 4(或按 Ctrl+1 / Ctrl+2 / Ctrl+4)按 1、2、4 字节为一组显示;点击 小端 LE / 大端 BE 切换字节序。字节序同时影响 2 / 4 字节单元的显示、数据检查器和鼠标悬停提示。

按 4 字节单元显示

地址空洞

带地址的格式(HEX、S-Record、ELF 等)中,没有数据的地址区间会折叠成一行 ··· 无数据 …(N 字节)···,不必滚过大片空白区域。

地址空洞

跳转

按 Ctrl+G(或点击工具栏的 Go To 输入框),输入地址后回车:

输入 含义
0800_1000、08001000、0x1000、1000h 十六进制地址(_ 会被忽略)
#4096 十进制地址
+10、-0x20、+#16 相对当前光标偏移

右键菜单的 选择两个偏移量之间的数据… 可以按起止地址精确选中一段数据。

鼠标与键盘

  • 单击定位光标,拖动或 Shift+单击 选择范围。
  • 方向键移动光标,Shift+方向键 扩展选区;PageUp / PageDown 翻页。
  • Home / End 移到行首 / 行尾,Ctrl+Home / Ctrl+End 移到数据开头 / 结尾。
  • Ctrl+A 全选,Esc 取消选区,Tab 在十六进制区和 ASCII 区之间切换。
  • 鼠标悬停在字节上会显示该位置作为 u8 / u16 / u32 的值。

查找

按 Ctrl+F 聚焦查找框,左侧下拉框选择查找方式:

方式 示例 说明
Hex DE AD BE EF、?? 01 00 08、DEADBEEF * 或 ?? 匹配任意一个字节
文本 Version 按字节匹配 ASCII / Latin-1 文本
正则 V\d+\.\d+ JavaScript 正则表达式
  • 边输入边查找,大文件中的结果会流式显示,所有命中处高亮。
  • Enter / Shift+Enter(或 ▼ / ▲ 按钮)跳到下一个 / 上一个结果,工具栏显示 当前/总数。
  • Aa 按钮切换是否区分大小写(文本、正则方式)。

Hex 通配查找

数据检查器

点击工具栏的 检查器 打开右侧面板,显示光标处数据按当前字节序解析后的值:Binary、Int8 / Uint8、Int16 / Uint16、Int32 / Uint32、Float、Int64 / Uint64、Double。面板里的数值可以直接选中复制。

(截图见页首)

编辑

  1. 在 Hex++ Editor 中按 Insert(或点击工具栏的 🔒 只读)切换为 ✎ 读写。
  2. 在十六进制区直接输入 0-9 A-F 改写字节;按 Tab 切到 ASCII 区可以直接输入字符(需要 1 字节单元)。
  3. 已修改的字节以高亮加粗显示,保存后恢复正常颜色。
  4. Ctrl+Z / Ctrl+Y 撤销 / 重做,Ctrl+S 按原格式保存(HEX 仍保存为 HEX,ELF 原位回写)。

编辑模式

其他编辑能力:

  • 填充选区(Ctrl+I 或右键菜单):输入字节序列,如 FF 或 DE AD BE EF,按顺序循环填满选区。
  • 热退出:未保存的修改在关闭 VS Code 后会被保留,下次打开时恢复。
  • 外部修改检测:文件被其他程序改写时,如果没有未保存的修改会自动重新加载;如果有,会询问是否放弃修改并重新加载。

⚠️ Hex++ 只能覆盖已有字节,不能插入或删除字节,也不能在地址空洞处写入。这样可以保证固件中所有数据的地址不变。

复制

操作 说明
Ctrl+C 按当前显示的样子复制(随 1 / 2 / 4 字节单元和字节序变化),默认格式可在设置中修改
Ctrl+Alt+C 复制为… 弹出格式列表,每项下方显示预览,上次用过的格式排在第一位
右键 → 复制偏移量 复制光标地址,十六进制(0x08000400)或十进制

“复制为”支持的格式(以 00 01 02 FF 为例):

格式 输出
Hex Octets 00 01 02 FF
Hex 000102FF
Literal \x00\x01\x02\xff
C unsigned char data[4] = { 0x00, 0x01, 0x02, 0xFF };
Go var data = []byte{0x00, 0x01, 0x02, 0xFF}
Java byte data[] = { 0x00, 0x01, 0x02, (byte) 0xFF };
JSON [0, 1, 2, 255]
Base64 AAEC/w==
UTF-8 按 UTF-8 解码的原始文本
Intel HEX / S-Record / TI-TXT 带选区真实地址的记录,可直接粘贴为一个小固件

C / Go / Java 数组的变量名取自文件名。

另存为 / 格式互转

点击工具栏的 另存为…,或在资源管理器中右键文件 → 另存为 / 转换格式…:

  1. 选择目标格式:Binary、Intel HEX、Motorola S-Record、TI-TXT(源文件是 ELF 时还可以选 ELF)。
  2. BIN → 带地址格式:BIN 文件不含地址信息,会询问起始地址,例如 0x08000000。
  3. 带地址格式 → BIN:BIN 从第一个数据段的地址开始(该地址对应文件偏移 0),地址空洞用填充字节(默认 0xFF,可在设置中修改)补齐,完成后会提示起始地址和填充了几处空洞。
  4. 选择保存位置后,可以直接用 Hex++ 打开结果文件。

从编辑器中另存时,会包含尚未保存的修改。

对比两个文件

打开对比

  • 在资源管理器中选中两个文件 → 右键 → 比较所选文件 (Hex++)。
  • 右键单个文件 → 与...比较 (Hex++),再选择另一个文件。
  • 在 Hex++ 编辑器中点击工具栏的 比较…。
  • 命令面板 → Hex++: 比较两个文件...。

两个文件可以是不同格式,例如 .hex 与 .elf、.s19 与 .bin。Hex++ 会按地址逐字节比较:值不同、或一侧有数据另一侧是空洞,都算作差异。

对比视图

对比视图

  • 每侧顶部显示文件名、修改时间和文件大小,差异字节标红,差异所在行的地址也标红。
  • 左侧概览条用红色标出所有差异的位置,点击或拖动可以快速跳转。
  • ✱ 全部 / ≠ 差异:“差异”视图只保留每处差异前后 64 字节,相同的大片区域(≥ 256 字节)折叠成一行 ⊞ 已折叠 … 字节相同,点击折叠行即可展开到该位置。
  • ⬇ 下一个(F8)/ ⬆ 上一个(Shift+F8):逐个浏览差异块,工具栏显示 差异 当前/总数 · 差异字节数。
  • ⇄ 交换左右两侧,⟳ 重载(F5)重新读取磁盘上的文件。
  • 跳转、查找、1 / 2 / 4 字节单元、复制等功能与单文件视图相同。

只看差异

导出 HTML 报告

点击 导出报告,生成一个独立的 HTML 文件,包含两个文件的信息、差异统计,以及每处差异附近的数据(相同区域自动折叠),方便存档或发给同事。

HTML 对比报告

快捷键

快捷键 功能 适用
Ctrl+G 跳转到地址 编辑器
Ctrl+F 查找 编辑器
Ctrl+1 / Ctrl+2 / Ctrl+4 按 1 / 2 / 4 字节显示 编辑器 / 对比
Ctrl+C 复制 编辑器 / 对比
Ctrl+Alt+C 复制为… 编辑器
Insert 切换只读 / 读写 编辑器
Ctrl+I 填充选区 编辑器(读写)
Ctrl+Z / Ctrl+Y / Ctrl+S 撤销 / 重做 / 保存 编辑器
F8 / Shift+F8 下一个 / 上一个差异 对比
F5 重新加载 对比

macOS 上将 Ctrl 换成 Cmd。

设置

设置项 默认值 说明
HexPlusPlus.defaultUnit 1 默认显示单元(1、2 或 4 字节)
HexPlusPlus.littleEndian true 2 / 4 字节单元与数据检查器按小端解释
HexPlusPlus.readOnlyByDefault true Hex++ Editor 打开时默认只读(Insert 切换)
HexPlusPlus.copy.defaultFormat displayed Ctrl+C 使用的格式;displayed 表示按当前显示复制,也可设为 hex、c、base64、ihex 等
HexPlusPlus.export.fillByte 255(0xFF) 导出 BIN 时用于填充地址空洞的字节
HexPlusPlus.export.recordLength 16 导出 Intel HEX / S-Record / TI-TXT 时每条记录的数据字节数(16 或 32)

支持的格式

格式 扩展名 说明
Intel HEX .hex .ihex .ihx 记录类型 00–05,检查校验和
Motorola S-Record .srec .s19 .s28 .s37 .mot S0–S9,检查校验和
TI-TXT .txt @ 地址行,q 结束
ELF 任意(按文件头识别) 32 / 64 位、大小端;按物理地址加载 PT_LOAD 段
BIN 其他所有文件 从地址 0 开始

格式先按扩展名判断,再用文件内容确认;内容对不上时按 BIN 处理(例如内容不是 @ 开头的 .txt 文件)。解析中遇到的错误(如校验和错误)不会中断加载,会在状态栏显示为警告。

常见问题

为什么输入没有反应? Hex++ Editor 默认以只读模式打开,按 Insert 或点击工具栏的 🔒 只读 切换为读写。Hex++ Viewer 始终只读。

对比结果里没有我刚做的修改? 对比读取的是磁盘上的文件,不包含编辑器中尚未保存的修改。请先保存,再在对比视图中按 F5 重载。

ELF 文件能另存为其他格式吗? 可以把 ELF 的加载段导出为 BIN / HEX / S-Record / TI-TXT;但只能从 ELF 文件另存为 ELF,其他格式无法转换为 ELF。

转换为 BIN 后文件变大了? BIN 没有地址信息,段与段之间的地址空洞必须用填充字节补齐。如果固件中的段相距很远(例如 Flash 与 EEPROM 两个区域),生成的 BIN 会很大。

发现问题或有建议? 欢迎到 GitHub Issues 反馈。

许可证

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft