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

直接用 hexdump -C 最省事
别试 hexdump file 默认输出,它按双字节分组(比如 6548),根本不是你想要的“逐字节十六进制”。hexdump -C 才是标准人眼可读格式:左侧偏移、中间 16 字节十六进制、右侧对应 ASCII(不可见字符自动显示为 .)。
-
-C等价于-v -e '16/1 "%02x " " |" 16/1 "%_p" "|\n"',不用记复杂语法 - 输出中每行 16 字节对齐,
|.ELF|这类魔数一眼就能认出来 - 不依赖字节序解释,小端大端都显示原始字节顺序
想查某段偏移位置?用 -s 和 -n
-s 是跳过前 N 字节,不是“seek 到 offset”——这点容易搞反。比如要查第 2048 字节开始的 32 字节,命令是:hexdump -C -s 2048 -n 32 file。
-
-s支持后缀:-s 0x800、-s 2K、-s 1MiB都合法 -
-n限制读取长度,单位默认字节;-n 100K表示最多读 100 KiB - 如果文件实际长度不足
-s + -n,不会报错,只输出能读到的部分
中文或 UTF-8 文件里全是点?不是乱码,是正常渲染
hexdump -C 右侧 ASCII 栏只显示 0x20–0x7e 范围内的字符,其余一律用 . 替代。UTF-8 中文每个字占 3 字节,必然含非 ASCII 字节,所以整块变点——这恰恰帮你快速识别出多字节区域。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 确认编码用:
file -i file - 真想看解码后文本,别硬套 hexdump,改用:
xxd -g1 file或iconv -f utf-8 -t ascii//ignore file - 协议分析时,
.反而是优势:一眼扫出00、0a、ff这类控制字节
替代方案:xxd 比 hexdump 更直觉
如果你常要双向转换(十六进制 ↔ 二进制)或导出纯 hex 字符串,xxd 语法更简洁、行为更稳定。
- 等效
hexdump -C:xxd file - 导出无空格纯 hex(如用于调试协议头):
xxd -p file | tr -d '\n' - 从 hex 字符串还原二进制:
echo "68656c6c6f" | xxd -r -p > out.bin - macOS/Linux 都预装,
od -t x1 -An -w1虽 POSIX 兼容但写法绕,不推荐日常用
真正麻烦的不是选哪个命令,而是忘了 -C 这个开关——没它,hexdump 输出基本没法直接读。










