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

hexdump -C 是最可靠的选择
别用 hexdump file 或 hexdump -x file 直接看——前者按双字节解释,会把 48 65 6c 6c 显示成 6548 6c6c;后者默认用小端序拼合,完全错位。真正要看原始字节,-C 是唯一开箱即用的方案。
它等价于 -v -e '16/1 "%02x " " |" 16/1 "%_p" "|\n"',输出三栏:偏移地址、16 字节十六进制、对应 ASCII(不可见字符自动替换成 .)。
-
hexdump -C /bin/ls—— 看 ELF 头,一眼识别7f 45 4c 46 - 大文件加
| less,避免刷屏:hexdump -C huge.bin | less - 想让十六进制全大写?
-C不支持,改用xxd -g1或自定义-e格式
定位某段字节:-s 和 -n 参数怎么用
-s 是 skip,不是 seek——它跳过开头 N 字节后开始读,不是“跳到第 N 字节”。比如要查 offset 0x800(2048)处的 32 字节,命令是:
hexdump -C -s 0x800 -n 32 file.bin
注意三点:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
-s后支持十进制(2048)、十六进制(0x800)、带单位(2K),但不能混用 -
-n限制的是“显示长度”,不是“读取长度”;若文件剩余不足,就只输出实际可读部分,不报错 - 偏移量从 0 开始计数,
-s 0等价于不加该参数
中文或 UTF-8 文件里全是点(.)?不是乱码
hexdump -C 右侧 ASCII 栏只显示 0x20–0x7e 范围内的字符,其余一律打点。UTF-8 中文每个字占 3 字节,必然含 0x80 以上字节,所以整块变点——这恰恰说明编码正常,不是损坏。
验证方法:
- 用
file -i file.txt确认编码是否为utf-8 - 用
iconv -f utf-8 -t ascii//ignore file.txt看过滤后剩什么 - 真想看到解码结果?
hexdump不干这事,换xxd -g1 file.txt | less或配合od -tc
替代工具:xxd 比 hexdump 更适合日常调试
当需要导出纯十六进制字符串、或反向转换(hex → binary),xxd 更稳:
- 导出无空格 hex 字符串:
xxd -p file.bin | tr -d '\n'(hexdump -v -e '/1 "%02x"' file.bin容易漏空格) - 把 hex 字符串转回二进制:
echo "7f454c46" | xxd -r -p > out.bin(hexdump -r对格式敏感,常失败) - macOS/Linux 都预装,语法统一;
od -t x1虽 POSIX 兼容,但默认 4 字节对齐,得加-An -w1才接近-C效果
真正难的不是命令本身,而是理解“偏移量是字节索引”“ASCII 栏只是渲染规则”“-x/-d/-o 都在按多字节分组”——这些细节错一点,看到的就是完全错误的数据。










