Notepad++需安装匹配架构的HEX-Editor插件并禁用自动编码检测,才能正确显示.class文件的cafebabe或.exe文件的MZ(4D5A)头部;否则会误将二进制数据按文本解码,导致显示空格(20)或换行(0A)等失真内容。

Notepad++打开.class或.exe后看不到cafebabe或MZ头?先确认插件已加载
菜单里没有Plugins → HexEditor → View in Hex,或者点了报错Plugin not installed,基本等于插件根本没进 Notepad++ 的视野。不是配置问题,是加载失败。
- 打开
帮助 → 关于 Notepad++,右下角明确写的是32-bit还是64-bit——这是唯一依据,别猜系统位数 - 去 GitHub 下载对应架构的
HexEditor_0.9.8_x86.zip或HexEditor_0.9.8_x64.zip,解压只取HexEditor.dll - 放进
C:\Program Files (x86)\Notepad++\plugins\HexEditor\(注意大小写,子目录名必须是HexEditor,不是hexeditor或HEX-EDITOR) - 杀毒软件(尤其是 Windows Defender)可能拦截 DLL,临时禁用或加白名单,然后**彻底关闭再重启 Notepad++**
View in Hex后满屏20/0A,但.class文件开头该是cafebabe?关掉自动检测编码
插件加载成功后,点View in Hex仍看到大量空格(20)、换行(0A),甚至EF BB BF(UTF-8 BOM),说明 Notepad++ 先按文本编码读了文件,再把解码结果转成 Hex 显示——你看到的不是原始字节,是“被误读后的字节”。
- 菜单栏
设置 → 首选项 → 新建 → 编码,取消勾选自动检测编码 - 重启 Notepad++,再打开
.class或.exe,此时左侧偏移地址、中间十六进制区、右侧 ASCII 区才真正反映原始字节 - 验证:Java 字节码文件开头应为
ca fe ba be,Windows 可执行文件开头应为4D 5A(即MZ)
光标在ASCII区敲字母就把字节改坏了?编辑前必须锁定左侧十六进制列
Hex 视图下,光标位置决定你改的是哪部分:落在左侧十六进制数字上,输入才是直接修改字节;落在右侧 ASCII 区敲字母,会覆盖对应位置的字节值(比如把41改成61),但界面不提示、无视觉反馈,极易误操作。
- 编辑前,用鼠标点击左侧十六进制区域(如地址
00000000右边的ca),确保光标在数字上且背景变蓝 - 想批量填入字节,别复制粘贴(
00会变20),用编辑 → Hex Editor → Modify Bytes,直接输十六进制字符串(如deadbeef) - 改完必须按
Ctrl+S保存,插件不会弹“是否保存”提示,关窗口就丢修改
复制含00的字节粘贴后变成20?这不是bug,是剪贴板机制限制
你在 Hex 视图选中00 01 02,Ctrl+C再Ctrl+V,结果变成20 01 02——这不是你手抖,是 HexEditor 插件底层依赖 Notepad++ 文本剪贴板,无法携带原始二进制数据,系统 fallback 到文本格式时把00当控制符替换成空格20。
- 跨应用粘贴(比如粘到记事本或微信)必然出错,只在同一个 Notepad++ 实例内复制/粘贴成功率最高
- 真要导出原始字节,别复制显示区,走
Plugins → HexEditor → Export to file另存为新二进制文件 - 大文件(>100MB)别硬开,Notepad++ 是内存加载,卡顿或崩溃是架构限制,不是插件问题


















