首页/开发/正则与编码速查/十六进制数据阅读与还原

十六进制数据阅读与还原

十六进制转储按行分三段:偏移、字节、可打印视图,默认每行 16 字节,阅读时以左侧十六进制偏移定位字段、以每两个十六进制数字为一字节读数;识别类型看文件头魔数,还原数据必须用 xxd -r 之类工具并校验长度。

正则与编码速查开发更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌​‌​​​​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌​​‌​​​‌‌‌​‌​‌​‌‌​‌‌​‌​‌‌‌​​​​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​​​‌​‌‌​​‌​​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

十六进制转储的三段结构

标准十六进制转储按行排列,每行三段:左侧是偏移量,中间是固定字节数的十六进制字节,右侧是这些字节对应的可打印字符,不可打印的用点号代替。默认每行 16 字节,中间常按 8 字节分成两组方便定位。读懂这三段,就能在不打开文件的情况下判断它的类型、长度与结构。

基本信息

Linux 工具xxd(可还原)、hexdump -C(规范格式)、od -A x -t x1z
Windows 工具PowerShell 的 Format-Hex,输出偏移、字节、Ascii 三列
每行字节数通常 16,可按需调整;xxd -c 或 hexdump -n 控制
偏移基准xxd 默认十六进制显示偏移,左侧 8 位十六进制数字
还原方式xxd -r 按转储文本还原,纯十六进制可用 xxd -r -p 或脚本解析

典型使用场景

  • 确认文件真实类型:扩展名被改过时看开头魔数
  • 排查二进制协议字段:定位偏移后按位宽读出数值
  • 比对两份文件差异,找出第一个不一致的字节偏移
  • 修复被截断的数据:确认尾部是否完整、有无填充
  • 分析硬件与固件数据,确认字节序与对齐

常用命令与还原

常用命令与还原
xxd file.bin | head -n 4        # 默认转储,左侧为十六进制偏移
hexdump -C file.bin | head      # 规范格式,与 xxd 布局接近
od -A x -t x1z file.bin | head  # 偏移十六进制、单字节十六进制加可打印字符
xxd -s 0x40 -l 32 file.bin      # 只看偏移 0x40 起的 32 字节
xxd file.bin > dump.txt && xxd -r dump.txt file.new  # 还原并校验
python3 -c "print(open('file.bin','rb').read(16).hex())"  # 纯十六进制串

每段怎么读

位置内容读法
左侧偏移该行第一个字节在文件中的位置十六进制,按 16 递增;定位字段时以它为准
中间字节每两个十六进制数字代表一字节数值大小写无关,空格只是分组,不是分隔符
中间分组常见 8 字节一组地址换算与对齐判断用得上,不影响字节值
右侧文本字节按单字节字符集的可打印视图点号既可能是真的点号,也可能是不可打印字节
行尾省略短行表示文件尾部不足一整行截断文件常表现为最后一行字节数异常
文件头魔数是识别类型的可靠依据:PDF 以 25 50 44 46 开头,ZIP 以 50 4B 03 04 开头,PNG 以 89 50 4E 47 开头,JPEG 以 FF D8 FF 开头,gzip 以 1F 8B 开头。扩展名与魔数不一致时,以魔数为准。
hexdump 不加 -C 时使用主机默认的字节分组与端序显示,看起来会比实际更混乱;跨平台交流数据时统一使用 hexdump -C 或 xxd 的输出格式,便于他人复现。

易错点

  • 用 xxd -r 还原格式被改动的转储文本,例如把中间的空格或偏移列删掉,还原出的文件会静默变化,必须校验长度与摘要
  • 把右侧文本列当成文件真实内容:不可打印字节一律显示为点号,直接复制文本会丢失原始字节
  • 用普通文本编辑器打开转储并保存,行尾与编码转换会破坏文本,通常先用十六进制编辑器确认再操作
  • 忽略偏移基准:左侧数字是十六进制,按十进制理解去找 0x40 会落在错误位置
  • 看到多字节字段直接按显示顺序读数值,未确认字节序,导致长度或标识字段解析错误

数据来源与参考

  • Linux man 手册:xxd、hexdump、od
  • Microsoft Learn:Format-Hex 命令参考
  • RFC 数据库与常见文件格式规范:通用魔数定义

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/regex/hex-dump-read-basics.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌​‌​​​​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌​​‌​​​‌‌‌​‌​‌​‌‌​‌‌​‌​‌‌‌​​​​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​​​‌​‌‌​​‌​​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​