1*53ee8cc1Swenshuai.xi# 2*53ee8cc1Swenshuai.xi# bin2hex.pl by Chami.com 3*53ee8cc1Swenshuai.xi# http://www.chami.com/tips/ 4*53ee8cc1Swenshuai.xi# 5*53ee8cc1Swenshuai.xi# Modify by Mark Chiang 6*53ee8cc1Swenshuai.xi 7*53ee8cc1Swenshuai.xi# number of characters per line 8*53ee8cc1Swenshuai.xi$chars_per_line = 16; 9*53ee8cc1Swenshuai.xi 10*53ee8cc1Swenshuai.xi# ------------------------------------- 11*53ee8cc1Swenshuai.xi 12*53ee8cc1Swenshuai.xi# language id 13*53ee8cc1Swenshuai.xi# 14*53ee8cc1Swenshuai.xi# 0 = Perl (default) 15*53ee8cc1Swenshuai.xi# 1 = C / C++ 16*53ee8cc1Swenshuai.xi# 2 = Pascal / Delphi 17*53ee8cc1Swenshuai.xi# 18*53ee8cc1Swenshuai.xi$lang = $ARGV[1]; 19*53ee8cc1Swenshuai.xi 20*53ee8cc1Swenshuai.xi$rem_begin = "begin binary data:"; 21*53ee8cc1Swenshuai.xi$rem_end = "end binary data."; 22*53ee8cc1Swenshuai.xi 23*53ee8cc1Swenshuai.xi# initialize for Perl strings 24*53ee8cc1Swenshuai.xi# by default 25*53ee8cc1Swenshuai.xi$_var = "# $rem_begin\n". 26*53ee8cc1Swenshuai.xi "\$bin_data = # %d\n"; 27*53ee8cc1Swenshuai.xi$_begin = "\""; 28*53ee8cc1Swenshuai.xi$_end = "\";\n"; 29*53ee8cc1Swenshuai.xi$_break = "\".\n\""; 30*53ee8cc1Swenshuai.xi$_format = "\\x%02X"; 31*53ee8cc1Swenshuai.xi$_separator = ""; 32*53ee8cc1Swenshuai.xi$_comment = "# $rem_end ". 33*53ee8cc1Swenshuai.xi "size = %d bytes"; 34*53ee8cc1Swenshuai.xi 35*53ee8cc1Swenshuai.xi 36*53ee8cc1Swenshuai.xi# C / C++ 37*53ee8cc1Swenshuai.xiif(1 == $lang) 38*53ee8cc1Swenshuai.xi{ 39*53ee8cc1Swenshuai.xi $_var = "/* $rem_begin */\n". 40*53ee8cc1Swenshuai.xi #"const char prompt_".$ARGV[0]."[] = ". 41*53ee8cc1Swenshuai.xi "#ifndef _FW_MVD_BIN_H_\n". 42*53ee8cc1Swenshuai.xi "#define _FW_MVD_BIN_H_\n". 43*53ee8cc1Swenshuai.xi "MS_U8 u8MVD_FW_Binary[] = ". 44*53ee8cc1Swenshuai.xi "/* %d */\n"; 45*53ee8cc1Swenshuai.xi $_begin = "{\n"; 46*53ee8cc1Swenshuai.xi $_end = "\n};\n"; 47*53ee8cc1Swenshuai.xi $_break = "\n"; 48*53ee8cc1Swenshuai.xi $_format = "0x%02X"; 49*53ee8cc1Swenshuai.xi $_separator = ","; 50*53ee8cc1Swenshuai.xi $_comment = "/* $rem_end ". 51*53ee8cc1Swenshuai.xi "size = %d bytes */\n". 52*53ee8cc1Swenshuai.xi "#endif\n"; 53*53ee8cc1Swenshuai.xi} 54*53ee8cc1Swenshuai.xielsif(2 == $lang) 55*53ee8cc1Swenshuai.xi{ 56*53ee8cc1Swenshuai.xi $_var = "{ $rem_begin }\n". 57*53ee8cc1Swenshuai.xi "const bin_data : ". 58*53ee8cc1Swenshuai.xi "array [1..%d] of ". 59*53ee8cc1Swenshuai.xi "byte = \n"; 60*53ee8cc1Swenshuai.xi $_begin = "("; 61*53ee8cc1Swenshuai.xi $_end = ");\n"; 62*53ee8cc1Swenshuai.xi $_break = "\n"; 63*53ee8cc1Swenshuai.xi $_format = "\$%02X"; 64*53ee8cc1Swenshuai.xi $_separator = ","; 65*53ee8cc1Swenshuai.xi $_comment = "{ $rem_end ". 66*53ee8cc1Swenshuai.xi "size = %d bytes }"; 67*53ee8cc1Swenshuai.xi} 68*53ee8cc1Swenshuai.xi 69*53ee8cc1Swenshuai.xiif(open(F, "<".$ARGV[0])) 70*53ee8cc1Swenshuai.xi{ 71*53ee8cc1Swenshuai.xi binmode(F); 72*53ee8cc1Swenshuai.xi 73*53ee8cc1Swenshuai.xi $s = ''; 74*53ee8cc1Swenshuai.xi $i = 0; 75*53ee8cc1Swenshuai.xi $count = 0; 76*53ee8cc1Swenshuai.xi $first = 1; 77*53ee8cc1Swenshuai.xi# $s .= $_begin; 78*53ee8cc1Swenshuai.xi while(!eof(F)) 79*53ee8cc1Swenshuai.xi { 80*53ee8cc1Swenshuai.xi if($i >= $chars_per_line) 81*53ee8cc1Swenshuai.xi { 82*53ee8cc1Swenshuai.xi $s .= $_break; 83*53ee8cc1Swenshuai.xi $i = 0; 84*53ee8cc1Swenshuai.xi } 85*53ee8cc1Swenshuai.xi if(!$first) 86*53ee8cc1Swenshuai.xi { 87*53ee8cc1Swenshuai.xi $s .= $_separator; 88*53ee8cc1Swenshuai.xi } 89*53ee8cc1Swenshuai.xi $s .= sprintf( 90*53ee8cc1Swenshuai.xi $_format, ord(getc(F))); 91*53ee8cc1Swenshuai.xi ++$i; 92*53ee8cc1Swenshuai.xi ++$count; 93*53ee8cc1Swenshuai.xi $first = 0; 94*53ee8cc1Swenshuai.xi } 95*53ee8cc1Swenshuai.xi# $s .= $_end; 96*53ee8cc1Swenshuai.xi# $s .= sprintf $_comment, $count; 97*53ee8cc1Swenshuai.xi $s .= "\n\n"; 98*53ee8cc1Swenshuai.xi 99*53ee8cc1Swenshuai.xi# $s = "\n".sprintf($_var, $count).$s; 100*53ee8cc1Swenshuai.xi 101*53ee8cc1Swenshuai.xi print $s; 102*53ee8cc1Swenshuai.xi 103*53ee8cc1Swenshuai.xi close( F ); 104*53ee8cc1Swenshuai.xi} 105*53ee8cc1Swenshuai.xielse 106*53ee8cc1Swenshuai.xi{ 107*53ee8cc1Swenshuai.xi print 108*53ee8cc1Swenshuai.xi "bin2hex.pl by Chami.com\n". 109*53ee8cc1Swenshuai.xi "\n". 110*53ee8cc1Swenshuai.xi "usage:\n". 111*53ee8cc1Swenshuai.xi " perl bin2hex.pl ". 112*53ee8cc1Swenshuai.xi " \n". 113*53ee8cc1Swenshuai.xi "\n". 114*53ee8cc1Swenshuai.xi " : path to the ". 115*53ee8cc1Swenshuai.xi "binary file\n". 116*53ee8cc1Swenshuai.xi " : 0 = Perl, ". 117*53ee8cc1Swenshuai.xi "1 = C/C++/Java, ". 118*53ee8cc1Swenshuai.xi "2 = Pascal/Delphi\n". 119*53ee8cc1Swenshuai.xi "\n"; 120*53ee8cc1Swenshuai.xi} 121*53ee8cc1Swenshuai.xi 122