现在位置: 首页 > Linux 教程 > 正文

Linux xxd 命令

Linux 命令大全 Linux 命令大全

xxd 是一个 Linux 下的命令行工具,用于将文件或数据转换为十六进制格式显示,类似于十六进制查看器。

xxd 命令也可以将十六进制数据重新转换为二进制文件。

xxd 命令通常用于调试、文件内容分析和数据转换。

语法格式

xxd [options] [inputfile [outputfile]]
  • inputfile:输入文件。如果未指定,则读取标准输入。
  • outputfile:输出文件。如果未指定,则输出到标准输出。

options 参数说明:

  • -r:将十六进制数据还原为二进制(反向操作)。
  • -p:以连续的纯十六进制形式(不带偏移地址和 ASCII)输出。
  • -c cols:每行输出多少个字节,默认为 16。
  • -g bytes:每组显示多少字节,默认为 2。
  • -s offset:从文件的某个偏移位置开始读取(支持负数表示从文件末尾开始)。
  • -l length:只显示指定长度的字节。
  • -u:将输出的十六进制字符转为大写。
  • -i:以 C 语言的数组格式输出。
  • -b:将输出转换为二进制格式,而不是十六进制。

常见用法

将文件以十六进制格式输出:

xxd filename

该命令会将 filename 文件以十六进制的方式显示。

将标准输入转换为十六进制:

echo "Hello World" | xxd

这会把字符串 "Hello World" 转换为十六进制并输出。

指定每行输出的字节数: 默认情况下,xxd 每行输出 16 字节的数据。可以使用 -c 参数修改:

xxd -c 8 filename

上述命令将每行显示 8 个字节的数据。

转换回原始数据: xxd 也可以将十六进制格式转换回原始的二进制数据,使用 -r 参数:

xxd -r hexfile

该命令将 hexfile 中的十六进制数据还原为二进制文件。

仅显示十六进制(不显示 ASCII): 使用 -p 选项只显示纯十六进制,不显示对应的 ASCII 字符:

xxd -p filename

控制输出的范围: 使用 -s 参数可以指定从文件的某个偏移处开始输出,使用 -l 指定输出的字节长度:

xxd -s 0x10 -l 0x20 filename

该命令从偏移量 0x10 开始,输出 0x20 字节的数据。

实例

1. 将文件内容以十六进制显示

xxd filename.txt

此命令会输出文件 filename.txt 的十六进制表示,默认每行显示 16 个字节的数据。

输出示例:

00000000: 4865 6c6c 6f0a                           Hello.

2. 指定每行输出的字节数

xxd -c 8 filename.txt

每行显示 8 个字节。

输出示例:

00000000: 4865 6c6c 6f0a 0000                      Hello...

3. 将十六进制还原为原始文件

xxd -r hexfile.txt original.bin

此命令会将十六进制数据 hexfile.txt 还原为二进制文件 original.bin。

4. 从文件的某个偏移位置开始显示

xxd -s 0x10 filename.txt

从偏移量 0x10 开始显示十六进制内容。

5. 以纯十六进制格式输出(不带偏移地址和 ASCII)

xxd -p filename.txt

输出纯十六进制数据,所有数据连续排列。

输出示例:

48656c6c6f0a

6. 生成 C 语言中的数组格式

xxd -i filename.txt

此命令会将文件内容以 C 语言数组的形式输出。

输出示例:

unsigned char filename_txt[] = {
  0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x0a
};
unsigned int filename_txt_len = 6;

7. 将输出的十六进制字母变为大写

xxd -u filename.txt

此命令将十六进制字母输出为大写。

输出示例:

00000000: 4865 6C6C 6F0A                           Hello.

8. 只显示一定长度的数据

xxd -l 16 filename.txt

此命令仅显示前 16 个字节的数据。

9. 将数据输出为二进制形式

xxd -b filename.txt

此命令会将文件内容以二进制位显示,而不是十六进制。

输出示例:

00000000: 01001000 01100101 01101100 01101100 01101111 00001010  Hello.

Linux 命令大全 Linux 命令大全