首页/系统/Linux 运维命令速查/hexdump 格式化十六进制转储
文本处理77 条

hexdump 格式化十六进制转储

另一种转储工具:-C 输出「十六进制 + ASCII」规范视图,-n/-s 控制字节数与起始偏移,排查文件头很好用。

Linux 运维命令速查系统更新于 2026-10-13

hexdump 是什么

hexdump 是 util-linux 提供的字节转储工具,把文件内容按可选格式打印成十六进制与文本对照。-C 输出规范的十六进制加 ASCII 视图,-n 限制字节数、-s 指定起始偏移。看文件头魔数、看磁盘镜像分区表、核对二进制协议报文头时最常用,是排查「文件到底是什么」的底层手段。

基本信息

所属util-linux(CentOS/Ubuntu 默认安装)
语法hexdump [选项] [文件]
关键选项-C 规范视图、-n 字节数、-s 起始偏移、-v 不折叠重复行
默认格式两字节一组,按本机字节序显示,直接读容易误判

典型使用场景

  • 判断文件真实类型:看开头的魔数字节
  • 排查二进制协议报文头与自定义二进制字段
  • 确认文本文件是否含不可见字符或 UTF-8 BOM
  • 对比两个二进制文件指定区段是否一致
  • 从大文件指定偏移处抽一段精确查看
  • 校验磁盘分区起始扇区是否符合 4K 对齐

常用示例

常用示例
hexdump -C -n 64 disk.img           # 规范视图看前 64 字节
hexdump -C file.bin | head -20      # 从头看,配合 head 截断输出
hexdump -C file.bin | tail -5       # 看文件尾部字节
hexdump -s 1024 -n 32 -C file.bin   # 从 1024 偏移看 32 字节
hexdump -C -v big.bin | head        # -v 不折叠重复行
hexdump -e '1/1 "%02x "' f.bin | head   # 自定义格式,逐字节十六进制
xxd file.bin | head                 # 另一常用工具,偏移与 ASCII 更紧凑
file disk.img && ls -l disk.img     # 先确认类型与大小再决定怎么看

-C 视图逐段读法

输出片段含义正常/异常
首列偏移十六进制字节偏移量应与 -s 起始值对齐
中部十六进制数据字节,每 8 字节空格分组最后一行不足 16 字节会缺位
右侧字符区同样字节的 ASCII 显示不可打印字符显示为点
下方一行偏移表示重复行被折叠需要完整输出时加 -v
hexdump 的默认格式按两字节一组并依本机字节序显示,直接读很容易把字节顺序看反,因此看二进制内容时一律加 -C,得到规范的十六进制加文本视图。
对大文件直接跑转储会输出几万行,终端被刷爆甚至会话卡住。务必配合 -n、head、tail,或先重定向到文件再慢慢查看。
几个常见魔数:ELF 文件以 7f 45 4c 46 开头,PNG 以 89 50 4e 47 开头,ZIP 以 50 4b 03 04 开头。看文件头几个字节,就能快速判断真实类型,比只看扩展名可靠。

易错点

  • 不加 -C 直接读默认格式:两字节分组且按本机字节序,字节顺序容易读反,结论跟着错
  • 对大文件裸跑 hexdump:输出海量内容刷爆终端,会话可能卡死
  • 把折叠后的偏移行当成新增数据:重复行默认被折叠,需要完整内容加 -v
  • 用 hexdump 看中文文本:右侧字符区全是点,判断编码应改用 file 或 iconv

数据来源与参考

  • man 1 hexdump(util-linux 手册)

相关工具

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