weidagang2046的专栏

物格而后知致
随笔 - 8, 文章 - 409, 评论 - 101, 引用 - 0
数据加载中……

k1205 extractor

$arg_num   =   @ARGV ;

(
$arg_num   ==   1 ||   die ( " usage: perl $0 [file]\n " );

open (FH ,   $ARGV [ 0 ])  ||   die ( " Failed to open $ARGV[0]\n " );

$flag   =   0 ;
$begin_symbol   =   ' |HEX |0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |A |B |C |D |E |F | ' ;

while ( $line   =   < FH > )
{
    
chop ( $line );
    
if ( 1   !=   $flag   ||   $line   =~   /^\| 0 \ s{ 3 } \|/ )
    {
        
$flag   =   1 ;
        
@bytes   =   split ( /\|/,   $line );
        
for ( $i   =   2 $i   <   @bytes $i ++ )
        {
            
push ( @data ,   $bytes [ $i ]);
        }
    }
}

# print join(" ", @data), "\n";

$beginOffset   =   3 ;
$group   =   3 ;

$group   =   3   -   $group ;

$pattern1   =   0x1   <<  ( 2   *   $group );
$pattern2   =   0x2   <<  ( 2   *   $group );

$count   =   0 ;

for ( $i   =   $beginOffset $i   <   @data $i   +=   4 )
{
    
$num   =   0 ;
    
for ( $j   =   0 $j   <   4 $j ++ )
    {
        
$part [ $j =  (( hex ( $data [ $i + $j ])  &  ( 0x1   <<  ( 2   *   $group )))  >>  ( 2   *   $group <<   1 |
                    ((
hex ( $data [ $i + $j ])  &  ( 0x2   <<  ( 2   *   $group )))  >>  ( 2   *   $group >>   1 );
        
$num   =  ( $num   <<   2 |   $part [ $j ];
    }

    
if ( $num   <   16 )
    {
        
print   " 0 " ;
    }
    
printf   " %x  " ,   $num ;
    
if ( ++ $count   %   16   ==   0 )
    {
        
print   " \n " ;
    }
}

close (FH);

posted on 2006-04-30 16:19 weidagang2046 阅读(250) 评论(0)  编辑  收藏 所属分类: Perl


只有注册用户登录后才能发表评论。


网站导航: