Linux 命令速查
文本处理 man xxd

xxd

制作十六进制转储或还原二进制数据

返回

补充说明

xxd 是 Vim 附带的十六进制转储工具,既能以十六进制加 ASCII 的形式显示文件,也能把十六进制文本还原为二进制。它常用于检查文件头、调试协议数据、生成 C 数组以及修补二进制文件。

默认输出每行 16 字节,左侧是偏移量,中间是十六进制字节,右侧是可打印字符。使用 -p 可输出连续的纯十六进制,适合与其他工具组合;-r 执行反向转换。-i 直接生成 C 语言的数组定义。

xxd 不是加密或校验工具,转储结果只是数据的表示。处理大文件时应使用 -l 限制长度或配合 -s 跳转,避免一次输出过多内容。反向转换要求输入格式与选项匹配,尤其是 -p 与普通格式不能混用。

语法

xxd [选项] [输入文件 [输出文件]]

选项

  • -l 长度:只转储指定字节数。
  • -s 偏移:从指定偏移开始,支持 0x 十六进制和负数。
  • -c 列数:每行显示的字节数,默认 16。
  • -g 分组:每多少个字节插入一个空格。
  • -p:输出纯十六进制,不带偏移和 ASCII。
  • -i:输出 C 语言数组形式。
  • -r:反向转换,把十六进制还原为二进制。
  • -b:以二进制位显示。
  • -u:使用大写十六进制字母。

实例

# 查看文件前 64 字节
xxd -l 64 firmware.bin

# 从偏移 0x100 开始查看
xxd -s 0x100 -l 128 firmware.bin

# 输出纯十六进制,去掉空白后便于比较
xxd -p payload.bin | tr -d '\n'

# 把十六进制文本还原为二进制
xxd -r -p payload.hex payload.bin

# 生成 C 数组
xxd -i logo.png > logo.h

# 查看 ELF 文件头魔数
xxd -l 16 /bin/ls

参考链接