Linux二进制查看工具——hexdump

目录

  • hexdump工具使用方法
    • 一、基本语法
    • 二、常用选项与示例
      • [1. 基础查看(默认格式)](#1. 基础查看(默认格式))
      • [2. 显示 ASCII 字符(`-C` 选项)](#2. 显示 ASCII 字符(-C 选项))
      • [3. 自定义每行显示字节数(`-n` 和 `-s`)](#3. 自定义每行显示字节数(-n-s))
      • [4. 简化输出(`-x`、`-d`、`-o` 等)](#4. 简化输出(-x-d-o 等))
      • [5. 自定义格式(`-e` 选项)](#5. 自定义格式(-e 选项))
      • [6. 其他实用选项](#6. 其他实用选项)
    • 三、典型使用场景
    • [四、与 `xxd` 对比](#四、与 xxd 对比)

hexdump工具使用方法

hexdump 是一款用于查看二进制文件或数据流的命令行工具,它能将二进制数据以十六进制、ASCII 等格式展示,常用于调试调试、分析文件结构或查看不可打印字符。以下是其核心用法和示例:

一、基本语法

bash 复制代码
hexdump [选项] [文件]

若不指定文件,默认从标准输入(如管道)读取数据。

二、常用选项与示例

1. 基础查看(默认格式)

不添加选项时,hexdump 以两列十六进制数(每列 16 字节)显示,右侧附带 ASCII 字符(不可打印字符用 . 表示):

bash 复制代码
hexdump test.bin

输出示例:

plaintext 复制代码
0000000 4865 6c6c 6f20 576f 726c 6421 0a00
000000d
  • 左侧 0000000 是偏移地址(十六进制)
  • 中间是十六进制数据(按 16 位分组)
  • 若启用 ASCII 显示,右侧会显示对应字符

2. 显示 ASCII 字符(-C 选项)

-C(或 --canonical)是最常用的选项之一,以规范格式显示:

  • 左侧:偏移地址
  • 中间:16 字节的十六进制(每行 16 字节,空格分隔)
  • 右侧:对应的 ASCII 字符(不可打印字符用 . 表示)
bash 复制代码
hexdump -C test.bin

输出示例:

plaintext 复制代码
00000000  48 65 6c 6c 6f 20 57 6f  72 6c 64 21 0a        |Hello World!.|
0000000d

3. 自定义每行显示字节数(-n-s

  • -n <数字>:只显示前 N 个字节
  • -s <偏移>:从文件的指定偏移量(十进制,加 0x 表示十六进制)开始显示
bash 复制代码
# 只显示前 10 个字节
hexdump -C -n 10 test.bin

# 从偏移量 0x05(十进制 5)开始显示
hexdump -C -s 0x05 test.bin

4. 简化输出(-x-d-o 等)

  • -x:以两字节为单位显示十六进制(默认格式)
  • -d:以两字节为单位显示十进制
  • -o:以两字节为单位显示八进制
  • -c:以单字节为单位显示 ASCII 字符(不可打印字符用转义序列)
bash 复制代码
# 单字节 ASCII 显示
hexdump -c test.bin

输出示例:

plaintext 复制代码
0000000   H   e   l   l   o       W   o   r   l   d   !  \n
000000d

5. 自定义格式(-e 选项)

通过 -e 可以自定义输出格式,适合特定场景(如解析协议格式)。格式语法:

plaintext 复制代码
hexdump -e '格式字符串' 文件

常用占位符:

  • %08_ax:8 位十六进制偏移地址(_a 表示地址,x 表示十六进制)
  • %02x:单字节十六进制(两位)
  • %c:ASCII 字符(不可打印用 .
  • \n:换行

示例:每行显示 8 字节,格式为「偏移 + 十六进制 + ASCII」

bash 复制代码
hexdump -e '%06_ax  ' -e '%02x ' -e '  |%c|\n' test.bin

输出示例:

plaintext 复制代码
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 字节)

三、典型使用场景

  1. 分析二进制文件结构:如查看图片、Protobuf 序列化数据等的二进制布局。
  2. 调试数据传输:对比发送 / 接收的二进制流,定位数据差异。
  3. 查看不可打印字符 :如日志中的控制字符(\r\n 等)。
  4. 验证文件格式 :如检查文件头标识(如 PNG 的 89 50 4E 47)。

四、与 xxd 对比

hexdumpxxd 功能类似,但 xxd 更简洁,且支持将文本转回二进制:

bash 复制代码
# 用 xxd 查看(类似 hexdump -C)
xxd test.bin

# 将 hex 文本转回二进制
xxd -r hex.txt test.bin

根据需求选择:hexdump 适合复杂格式定制,xxd 适合简单查看和转换。

相关推荐
MSTcheng.21 分钟前
【C++STL】priority_queue 模拟实现与仿函数实战
开发语言·c++
还有几根头发呀30 分钟前
从 C++ 的角度,系统地解释 进程(Process)、线程(Thread)、协程(Coroutine) 的概念、原理、优缺点,以及常见应用场景。
c++
oioihoii34 分钟前
Python与C++:从哲学到细节的全面对比
c++
小年糕是糕手39 分钟前
【C++】C++入门 -- inline、nullptr
linux·开发语言·jvm·数据结构·c++·算法·排序算法
工具人555539 分钟前
Linux远程登录
linux·运维·服务器
kk哥88991 小时前
Keil MDK 5.39 编程 + 调试 ,ARM 嵌入式开发!如何安装
c++·arm
重启的码农1 小时前
enet源码解析 (2) 对等节点 (ENetPeer)
c++·网络协议
塞北山巅1 小时前
camera hal层(AF)
c++·camera
wangsiling61 小时前
11.13zy
linux·服务器·网络
qq_479875432 小时前
X-Macros(2)
c++