Linux二进制查看工具——hexdump
目录
- hexdump工具使用方法
- 一、基本语法
- 二、常用选项与示例
- 1. 基础查看(默认格式)
- 2. 显示 ASCII 字符(`-C` 选项)
- 3. 自定义每行显示字节数(`-n` 和 `-s`)
- 4. 简化输出(`-x`、`-d`、`-o` 等)
- 5. 自定义格式(`-e` 选项)
- 6. 其他实用选项
- 三、典型使用场景
- 四、与 `xxd` 对比
hexdump工具使用方法
hexdump
是一款用于查看二进制文件或数据流的命令行工具,它能将二进制数据以十六进制、ASCII 等格式展示,常用于调试调试、分析文件结构或查看不可打印字符。以下是其核心用法和示例:
一、基本语法
hexdump [选项] [文件]
若不指定文件,默认从标准输入(如管道)读取数据。
二、常用选项与示例
1. 基础查看(默认格式)
不添加选项时,hexdump
以两列十六进制数(每列 16 字节)显示,右侧附带 ASCII 字符(不可打印字符用 .
表示):
hexdump test.bin
输出示例:
0000000 4865 6c6c 6f20 576f 726c 6421 0a00
000000d
- 左侧
0000000
是偏移地址(十六进制) - 中间是十六进制数据(按 16 位分组)
- 若启用 ASCII 显示,右侧会显示对应字符
2. 显示 ASCII 字符(-C
选项)
-C
(或 --canonical
)是最常用的选项之一,以规范格式显示:
- 左侧:偏移地址
- 中间:16 字节的十六进制(每行 16 字节,空格分隔)
- 右侧:对应的 ASCII 字符(不可打印字符用
.
表示)
hexdump -C test.bin
输出示例:
00000000 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 0a |Hello World!.|
0000000d
3. 自定义每行显示字节数(-n
和 -s
)
-n <数字>
:只显示前 N 个字节-s <偏移>
:从文件的指定偏移量(十进制,加0x
表示十六进制)开始显示
# 只显示前 10 个字节
hexdump -C -n 10 test.bin# 从偏移量 0x05(十进制 5)开始显示
hexdump -C -s 0x05 test.bin
4. 简化输出(-x
、-d
、-o
等)
-x
:以两字节为单位显示十六进制(默认格式)-d
:以两字节为单位显示十进制-o
:以两字节为单位显示八进制-c
:以单字节为单位显示 ASCII 字符(不可打印字符用转义序列)
# 单字节 ASCII 显示
hexdump -c test.bin
输出示例:
0000000 H e l l o W o r l d ! \n
000000d
5. 自定义格式(-e
选项)
通过 -e
可以自定义输出格式,适合特定场景(如解析协议格式)。格式语法:
hexdump -e '格式字符串' 文件
常用占位符:
%08_ax
:8 位十六进制偏移地址(_a
表示地址,x
表示十六进制)%02x
:单字节十六进制(两位)%c
:ASCII 字符(不可打印用.
)\n
:换行
示例:每行显示 8 字节,格式为「偏移 + 十六进制 + ASCII」
hexdump -e '%06_ax ' -e '%02x ' -e ' |%c|\n' test.bin
输出示例:
000000 48 65 6c 6c 6f 20 57 6f |Hello Wo|
000008 72 6c 64 21 0a |rld!.|
6. 其他实用选项
-v
:显示所有数据,不省略重复行(默认会用*
省略连续重复内容)-n
:限制显示的总字节数(如-n 100
只显示前 100 字节)-s
:跳过指定字节数后开始显示(如-s 10
跳过前 10 字节)
三、典型使用场景
- 分析二进制文件结构:如查看图片、Protobuf 序列化数据等的二进制布局。
- 调试数据传输:对比发送 / 接收的二进制流,定位数据差异。
- 查看不可打印字符:如日志中的控制字符(
\r
、\n
等)。 - 验证文件格式:如检查文件头标识(如 PNG 的
89 50 4E 47
)。
四、与 xxd
对比
hexdump
与 xxd
功能类似,但 xxd
更简洁,且支持将文本转回二进制:
# 用 xxd 查看(类似 hexdump -C)
xxd test.bin# 将 hex 文本转回二进制
xxd -r hex.txt test.bin
根据需求选择:hexdump
适合复杂格式定制,xxd
适合简单查看和转换。