xxd命令¶
用于生成十六进制(hexadecimal)表示的工具,也可以将十六进制数据还原为原始的二进制数据。它通常用于查看二进制文件的内容、调试或者修改文件。
特别适合处理二进制文件的十六进制表示和还原,适用于文件调试、数据转换和脚本自动化任务。
选项¶
-g:分组大小,默认是 2(表示每两个字节为一组)。
-u:将输出中的十六进制字符显示为大写。
-i:生成 C 语言数组形式的输出,用于嵌入二进制数据到代码中。
-s:跳过的偏移量(单位:字节)。
-l:要读取的长度(单位:字节)。
-r:表示反转操作,从十六进制数据还原为二进制。
-c 选项指定每行显示的字节数(默认为 16)。
-p 显示纯十六进制数据
-p | -ps | -postscript | -plain
Output in PostScript continuous hex dump style. Also known as plain hex dump style.
基本¶
将文件转换为十六进制格式:
$ xxd example.bin
00000000: 1266 179c 70dc e631 4bde d13a 6b22 f4dd .f..p..1K..:k"..
00000010: 4959 1412 ecce 6975 f374 9a8d 34e5 1cbc IY....iu.t..4...
每一行包含三个部分:
偏移量(行首的 00000000 表示第 0 字节)。
每 16 个字节的十六进制数据。
ASCII 表示(右边部分显示可见字符,不可见字符用 . 表示)。
-p 选项¶
显示纯十六进制数据:
$ xxd -p example.bin
1266179c70dce6314bded13a6b22f4dd49591412ecce6975f3749a8d34e5
1cbc
生成十六进制文件:
$ xxd -p example.bin > example.hex
-r 选项¶
从十六进制文件还原:
$ xxd -r -p example.hex
f�p��1K��:k"��IY��iu�t��4��%
$ xxd -r -p example.hex > restore.bin
-i 选项¶
$ xxd -i example.bin
# 输出
unsigned char secret_key_bin[] = {
0x12, 0x66, 0x17, 0x9c, 0x70, 0xdc, 0xe6, 0x31, 0x4b, 0xde, 0xd1, 0x3a,
0x6b, 0x22, 0xf4, 0xdd, 0x49, 0x59, 0x14, 0x12, 0xec, 0xce, 0x69, 0x75,
0xf3, 0x74, 0x9a, 0x8d, 0x34, 0xe5, 0x1c, 0xbc
};
unsigned int secret_key_bin_len = 32;