RISC-V Binutils工具链18之xxd命令的使用
Linux ELF 分析18之xxd工具的使用
xxd 用于将二进制文件转换为十六进制,也可以将hex dump 转回二进制。
1 xxd 工具常用选项
$ xxd --help
输出log见:xxd_help
1.1 基本模式
| 选项 | 说明 |
|---|---|
| -r | 反向模式(reverse):将 hex dump 文本还原为二进制数据。 |
| -i | 输出为C 语言头文件格式(C include style),适合嵌入代码。 |
| -ps | 输出为PostScript 风格的纯十六进制流(plain hexdump)。 |
| -b | 二进制位 dump:显示每个字节的 8 位二进制形式(而不是十六进制)。 |
注意:-r, -i, -ps, -b, -e 互不兼容,不能同时使用。
-i 模式输出示例:
unsigned char data[] = {
0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x57, 0x6f, // Hello Wo
0x72, 0x6c, 0x64, 0x0a // rld.
};
unsigned int data_len = 12;
非常适合嵌入到 C/C++ 程序中。
1.2 输出格式控制
| 选项 | 说明 |
|---|---|
| -c cols | 每行显示 cols 个字节(octets)。默认 16。• -i 模式默认 12• -ps 模式默认 30 |
| -g | 每组显示 g 个字节,默认 2。例如 -g 1:00 11 22-g 4:00112233(常用于小端模式) |
| -u | 使用大写字母表示十六进制(如 A-F)默认小写 |
| -e | 小端序(little-endian) dump,每 4 字节一组反序显示。 与 -g 4 类似,但格式固定。 |
1.3 显示风格与美化
| 选项 | 说明 |
|---|---|
| -a | 启用 autoskip:连续的空行(全 00)用一行 * 代替,节省输出空间 |
| -E | 显示字符部分使用 EBCDIC 编码(罕见,主要用于 IBM 主机环境) 默认使用 ASCII |
| -C | 在 -i 模式下,变量名使用大写(C 风格宏命名) |
1.4 帮助与信息
| 选项 | 说明 |
|---|---|
| -h | 显示帮助信息(help) |
| -v | 显示版本信息(version) |
2 典型使用场景
| 命令 | 说明 |
|---|---|
| xxd file.bin | 默认 hex dump,16 字节/行 |
| xxd -c 8 file.bin | 每行 8 字节 |
| xxd -g 1 file.bin | 每组 1 字节,便于阅读 |
| xxd -u file.bin | 十六进制用大写字母 |
| xxd -i file.bin | 输出为 C 数组格式 |
| xxd -i -C file.bin | C 数组,变量名大写 |
| xxd -e file.bin | 小端序 dump,每 4 字节一组 |
| xxd -b file.bin | 二进制位 dump(0/1 形式) |
| xxd -ps file.bin | 纯十六进制流,无地址和ASCII |
| xxd -r hexdump.txt binary.bin | 将 hexdump 还原为二进制 |
| xxd -s 512 -l 256 disk.img | 从第 512 字节开始,读 256 字节 |

浙公网安备 33010602011771号