xxd
名称
xxd - make a hexdump or do the reverse
概要
xxd -h[elp]
xxd [options] [infile [outfile]]
xxd -r[evert] [options] [infile [outfile]]
描述
xxd 对于标准输入或给定文件,显示其16进制的内容,也可以反过来进行转换。
$ xxd hello.txt
00000000: 6865 6c6c 6f20 776f 726c 6420 310a 6865 hello world 1.he
00000010: 6c6c 6f20 776f 726c 6420 320a llo world 2.
选项
如果未指定infile(或指定infile为字符'-'),则采用标准输入。
如果未指定outfile(或者指定outfile为字符'-'),则采用标准输出。
-b | -bits
以二进制格式进行输出。-r, -p, -i在此模式无效。
$ xxd -b hello.txt
00000000: 01101000 01100101 01101100 01101100 01101111 00100000 hello
00000006: 01110111 01101111 01110010 01101100 01100100 00100000 world
0000000c: 00110001 00001010 01101000 01100101 01101100 01101100 1.hell
00000012: 01101111 00100000 01110111 01101111 01110010 01101100 o worl
00000018: 01100100 00100000 00110010 00001010 d 2.
-c cols | -cols cols
每行输出多少个字节。默认16(-i: 12, -ps: 30, -b: 6),最大256 。
$ xxd -c 8 hello.txt
00000000: 6865 6c6c 6f20 776f hello wo
00000008: 726c 6420 310a 6865 rld 1.he
00000010: 6c6c 6f20 776f 726c llo worl
00000018: 6420 320a d 2.
-C | -capitalize
在指定-i(输出成C语言数组格式)时使用,生成大写的变量名。
$ xxd -C -i hello.txt
unsigned char HELLO_TXT[] = {
0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20,
0x31, 0x0a, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c,
0x64, 0x20, 0x32, 0x0a
};
unsigned int HELLO_TXT_LEN = 28;
-e
将每个组的数据以little-endian模式输出。
$ xxd -e hello.txt
00000000: 6c6c6568 6f77206f 20646c72 65680a31 hello world 1.he
00000010: 206f6c6c 6c726f77 0a322064 llo world 2.
-g bytes | -groupsize bytes
几个字节成一组,使用-g 0 取消分组。
$ xxd -g 4 hello.txt
00000000: 68656c6c 6f20776f 726c6420 310a6865 hello world 1.he
00000010: 6c6c6f20 776f726c 6420320a llo world 2.
-h | -help
打印帮助。
-i |-include
输出成C语言数组格式。
$ xxd -i hello.txt
unsigned char hello_txt[] = {
0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20,
0x31, 0x0a, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c,
0x64, 0x20, 0x32, 0x0a
};
unsigned int hello_txt_len = 28;
-l len | -len len
输出几个字节后结束。
$ xxd -l 10 hello.txt
00000000: 6865 6c6c 6f20 776f 726c hello worl
-p | -ps | -postscript | -plain
以一个整块输出所有的hex, 不使用空格进行分割。
$ xxd -p hello.txt
68656c6c6f20776f726c6420310a68656c6c6f20776f726c6420320a
-r | -revert
反向操作。
-s [+][-] seek
从第几个字节开始。+seek表示以头部向后seek字节作为起点,-seek表示以尾部向前seek字节作为起点。
$ xxd -s 3 hello.txt
00000003: 6c6f 2077 6f72 6c64 2031 0a68 656c 6c6f lo world 1.hello
00000013: 2077 6f72 6c64 2032 0a world 2.
$ xxd -s -3 hello.txt
00000019: 2032 0a 2.
-u
使用大写的16进制
$ xxd -u hello.txt
00000000: 6865 6C6C 6F20 776F 726C 6420 310A 6865 hello world 1.he
00000010: 6C6C 6F20 776F 726C 6420 320A llo world 2.
-v | -version
显示版本信息。
网友评论