hexdump -C 是最稳妥的十六进制+ASCII混合输出首选,因其按字节显示两位十六进制、右侧对齐ASCII字符、8位偏移量固定,格式稳定易定位;其他模式如-x、-d、-b、-o或无参数默认行为均易导致误读或信息缺失。

直接看十六进制+ASCII混合输出,用 hexdump -C 就够了——这是最稳妥、最不易出错的默认选择。
为什么 hexdump -C 是首选
它把每个字节拆成两位十六进制(7f 45 4c 46),右侧对齐显示对应 ASCII 字符(不可见字符用 . 替代),偏移量固定为 8 位十六进制,格式稳定、人眼可快速定位。其他模式如 -x 或 -d 默认按双字节解析,容易因字节序或数据边界错位导致误读。
-
-x把每两个字节当一个 16 位整数输出(比如6261实际是0x6261,对应小端序的ab),看到的不是原始字节流 -
-b或-o输出八进制,人类不习惯,排查时还得心算转换 - 不加任何选项的
hexdump file默认用双字节十六进制,且不显示 ASCII 列,信息密度低、易漏判
hexdump -C 的实用变体
真实场景中几乎总要配合参数控制范围,避免刷屏或跳过无关内容:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 只看文件头(识别格式):
hexdump -n 32 -C file—— 前 32 字节足够捕获 ELF(7f 45 4c 46)、PNG(89 50 4e 47)、ZIP(50 4b 03 04)等魔数 - 跳过头部查某段数据:
hexdump -s 0x1000 -n 64 -C file—— 从 4KB 偏移处读 64 字节,-s支持0x十六进制写法,比十进制更直观 - 配合
tail看尾部(如日志截断):tail -c 128 file.bin | hexdump -C—— 注意不能直接hexdump -s负偏移,必须靠tail预处理
别踩这些坑
hexdump 行为受系统字节序和默认分组影响,几个关键细节常被忽略:
-
-v参数必须显式加:默认情况下,连续重复行会被压缩成一行*,可能掩盖实际数据模式,分析协议或内存布局时务必加-v -
strings不是hexdump的替代品:它只提取可打印字符串(默认长度 ≥4),会漏掉二进制字段、结构体偏移、加密密钥片段等关键非文本内容 - 管道后别忘
-a:如果用grep搜hexdump -C输出,必须加grep -a,否则遇到中间的\0字节会提前截断匹配 -
hd是别名,但行为完全一致:可以互换使用,无需额外安装,hd -C file和hexdump -C file效果相同
真正难的不是命令本身,而是理解你看到的每一列数字到底对应哪一“字节”——尤其是当文件含 padding、对齐填充或自定义结构时,偏移量计算和字节边界意识比记住所有选项更重要。

















