Linux学习|Gentoo/Arch/FreeBSD我用 Linux

unix常用命令手册 - xxd 查看十六进制

2020-02-21  本文已影响0人  我思故我在2020

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

显示版本信息。

上一篇 下一篇

猜你喜欢

热点阅读