隨筆-314  評論-209  文章-0  trackbacks-0

          當我們需要把二進制轉成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    將當前文本轉化回文本格式

          posted on 2016-09-18 09:38 xzc 閱讀(2534) 評論(0)  編輯  收藏 所屬分類: linux/unix
          主站蜘蛛池模板: 安康市| 平邑县| 南宫市| 永仁县| 许昌市| 温州市| 沁源县| 明光市| 喀喇| 横峰县| 新宾| 凤冈县| 新竹县| 霍林郭勒市| 商南县| 旬邑县| 罗定市| 威信县| 忻城县| 宜宾县| 太和县| 宿迁市| 华亭县| 开阳县| 永定县| 台东县| 辰溪县| 崇义县| 关岭| 婺源县| 巴马| 浦江县| 咸丰县| 西藏| 枣庄市| 赤壁市| 兴海县| 温泉县| 绍兴市| 盐山县| 铜陵市|