shell脚本 把十进制数据转换成十六进制

来源:互联网 发布:淘宝差评报复 编辑:程序博客网 时间:2024/06/09 21:51

    本文介绍了一种shell脚本,用来处理十进制数转换成十六进制的方法。现有两个数据文件i0.txt和q0.txt,数据如下:

i0.txt                     q0.txt              

  935                    3297

  385                    6964

 -280                 12697

1768                   8404

7377                    -852

 

 

#!bin/bash

#因为有负数,所以先转换成16位十六进制数 %16x

cat  i.txt  |  \

awk  '{printf  "%16x  \n",$1}'  > i00.txt

cat  q.txt  |  \

awk  '{printf  "%16x  \n",$1}'  > q00.txt

 

#我需要的是i0.txt和q0.txt十进制数对应的4位十六进制数,取有效的4位

cut  -c  13-16  i00.txt  >  i_mem.txt

cut  -c  13-16  q00.txt  > q_mem.txt

 

#不足4位的,前面补0

cat  i_mem.txt  |  \

awk  '{printf  "%04s  \n",$1}'  >  i_mem_00.txt

cat  q_mem.txt  |  \

awk  '{printf  "%04s  \n",$1}'  >  q_mem_00.txt

 

#将两个文件(各4位)组成8位十六进制数

paste  -d  ":"  i_mem_00.txt  q_mem_00.txt  > rfiu_mem_00.txt

sed  's/  ://g'  rfiu_mem_00.txt  >  rfiu_mem.txt

 

#中间数据如下:

       i00.txt                         q00.txt

           3a7                             ce1

           181                          1b34

ffffffffffffa1f                           3199

           6e8                           20d4

         1cdc                 fffffffffffffcac

 

     i_mem.txt                 q_mem.txt

           3a7                             ce1

           181                          1b34

           fa1f                           3199

           6e8                           20d4

         1cdc                             fcac

 

 i_mem_00.txt               q_mem_00.txt

          03a7                            0ce1

           0181                          1b34

           fa1f                             3199

           06e8                           20d4

         1cdc                              fcac

 

        rfiu_mem.txt

           03a70ce1

           01811b34

           fa1f 3199

           06e820d4

          1cdcfcac

    

注:可能这个方法不是最精简的,如有更好的方法请高手指点一二,不胜感激。  
原创粉丝点击