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