当我们需要把二进制转成c语言中使用的16进制字符数组时,命令xxd是很有用的。
 xxd 帮助信息如下:关键选项标黑。
 [root@localhost ]# xxd --help
Usage:
       xxd [options] [infile  [outfile]]
    or
       xxd -r [-s [-]offset] [-c cols] [-ps] [infile  [outfile]]
Options:
    -a          toggle autoskip: A single '*' replaces  nul-lines. Default off.
    -b          binary digit dump (incompatible with  -p,-i,-r). Default hex.
    -c cols     format <cols> octets per line.  Default 16 (-i: 12, -ps: 30).
    -E          show characters in EBCDIC.  Default ASCII.
    -g          number of octets per group in normal  output. Default 2. 每个goup的字节数,默认为2,可设置。
    -h          print this  summary.
    -i          output in C include file style.  :输出为c包含文件的风格,数组方式存在。
    -l len      stop after <len>  octets.        :转换到len个字节后停止转换。
    -ps         output in postscript  plain hexdump style.
    -r          reverse operation: convert (or patch)  hexdump into binary.
    -r -s off   revert with <off> added to file  positions found in hexdump.
    -s [+][-]seek start at <seek> bytes  abs. (or +: rel.) infile offset.
   -u          use upper case hex  letters. : 字节大写方式
    -v          show version: "xxd V1.10 27oct98  by Juergen Weigert".
 比如运行:
 > xxd -g 1 -i -u -l 10000000 nm.ts > xxd_test.txt
 生成的文本显示:
 unsigned char __0513_1634_ch32_666_10_ts[] = {
0X47, 0X02, 0X03, 0X13,  0XF8, 0X5A, 0XC5, 0X40, 0X26, 0XE4, 0XD0, 0XDE,
0XAD, 0XB8, 0X76, 0X89, 0X85,  0X23, 0X06, 0X04, 0X6E, 0X05, 0X8B, 0X09,
0XC0, 0X5C, 0X96, 0X4F, 0X18, 0X51,  0X41, 0XC8, 0X40, 0X9F, 0X06, 0X93,
0X38, 0XC1, 0XBB, 0X1A, 0XBC, 0XAC, 0X47,  0XFF, 0X5E, 0X54, 0XEB, 0XA7,
0X14, 0X36, 0X85, 0X8A, 0X90, 0X14, 0X17, 0XA2,  0X9D, 0XC0, 0X84, 0X56,
0XCB, 0X97, 0X78, 0XC8, 0X57, 0X15, 0X3E, 0X61, 0X6F,  0XFE, 0XC9, 0X39,
0XEF, 0XD3, 0XB6, 0X6A, 0XD2, 0XE4, 0XFB, 0X4C, 0X05, 0XF6,  0X03, 0XED,
0X50, 0XB3, 0XE7, 0X46, 0X57, 0X24, 0X71, 0X16, 0X38, 0X45, 0X53,  0X19,
0X56, 0X25, 0X3C, 0X8D, 0X4C, 0XA9, 0X28, 0X9A, 0XB2, 0X99, 0X76,  0X52,
0X28, 0XE9, 0XD6, 0XD6, 0X11, 0X94, 0X89, 0X19, 0X4D, 0XEA, 0X68,  0X76,
0X53, 0XC6, 0XAA, 0X3A, 0XD4, 0XA1, 0X25, 0XA5, 0X03, 0XB0, 0X73,  0XA0,
0XAE, 0X11, 0XC9, 0XBD, 0X37, 0X17, 0X11, 0X5F, 0X30, 0X34, 0X34,  0X0B
 .....
 };
 unsigned int nm.ts_len = 10000000;
 另外,在vim中也可以把文件转换为16进制来显示:
 :%!xxd
 返回正常显示:
 :%!xxd -r
  
 linux下查看二进制文件
以十六进制格式输出:
od [选项] 文件
od -d 文件  十进制输出
   -o  文件  八进制输出
   -x 文件  十六进制输出
xxd 文件  输出十六进制
在vi命令状态下:
:%!xxd    :%!od    将当前文本转化为16进制格式
:%!xxd -c 12 每行显示12个字节
:%!xxd -r     将当前文本转化回文本格式