od -t x1最稳妥,因它严格按文件字节流输出单字节十六进制;而od -x实为od -t x2,以小端双字节解释易误读,如0x6162被错解为“ab”,实际可能是0x62 0x61。

直接用 od -t x1 就能看原始字节,但不调参数,看到的很可能是错的。
为什么 od -x 不等于单字节十六进制
很多人一上来就敲 od -x file,结果把 0x6162 当成 “ab”,其实文件里存的是 0x62 0x61(小端序双字节),根本不是你想查的那个字节顺序。
-
od -x等价于od -t x2,按 2 字节一组解释并倒序显示 - 真正对应文件字节流顺序的,是
od -t x1:每个字节独立输出为 2 位十六进制 - 如果文件头是
7f 45 4c 46(ELF magic),od -x会输出457f 464c,完全打乱了识别逻辑
怎么让输出对得上真实偏移和内容
默认地址是八进制、每行 32 字节、重复行被压缩——这些都会干扰定位和比对。
- 加
-A d改用十进制地址:od -t x1 -A d file,0、1、2… 更符合直觉 - 加
-w 16控制宽度:od -t x1 -A d -w 16 file,标准 16 字节/行,方便对照 hex 编辑器 - 加
-v禁用重复行压缩:od -t x1 -A d -w 16 -v file,避免漏掉关键字节段 - 想只看前 64 字节(比如文件头):
od -t x1 -A x -N 64 file,地址用十六进制更匹配常见文档描述
怎么同时看字节值和可读字符
-t x1 -t c 是最实用的组合,但要注意对齐和 locale 干扰。
-
od -t x1 -t c -A d -w 16 file:左列十六进制,右列对应 ASCII 或转义符,严格左对齐 - 中文或 UTF-8 多字节序列在
-t c下可能被截断或显示异常,此时加LANG=C强制按字节解释:LANG=C od -t x1 -t c file - 别用
-c单独看——它默认按-t c+ 八进制地址 + 压缩,信息不全还难定位
真正卡住人的不是命令记不住,而是看到一行 0000000 61 62 63 0a 时,不确定这“61”到底对应文件第几个字节、是不是被跳过或截断了。参数必须配齐,否则 od 输出的就是“解释后的数据”,不是“原始字节”。


















