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 适合简单查看和转换。

相关推荐
云边有个稻草人2 小时前
从内核调优到集群部署:基于Linux环境下KingbaseES数据库安装指南
linux·数据库·金仓数据库管理系统
Raymond运维3 小时前
MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)
linux·数据库·mysql
十重幻想3 小时前
PTA6-4 使用函数统计指定数字的个数(C)
c语言·c++·算法
夜月yeyue3 小时前
ART 加速器、流水线与指令预测的关系详解
linux·服务器·c语言·单片机·嵌入式硬件·性能优化·嵌入式高阶技巧
铁手飞鹰3 小时前
VS2022创建项目工程笔记
c++·windows·笔记·visualstudio
ningbinzhang3 小时前
MFC 获取域名TXT记录内容
c++·mfc
佛系彭哥3 小时前
Win11下VSCode与MSYS2配置全攻略
c++·vscode·wxwidgets·msys2
---学无止境---3 小时前
Linux中select的实现
linux
Yupureki3 小时前
从零开始的C++学习生活 5:内存管理和模板初阶
c语言·c++·学习·visual studio