ソース埋め込み用ファイルダンプ
バイナリーファイルを、C/C++ のソースに埋め込める形式でダンプします。
[使用法] dmp.pl infile
#!/usr/bin/perl -w
# ファイル の内容を C/C++ソースで利用できるようにダンプ出力する
# 使用法 : dmp.pl srcfile
foreach (@ARGV) {
unless ( open(IN, $_) ) {
print "/* file open error ($_) */";
next;
}
binmode (IN);
read IN, $data, 1024*1024; # とりあえず、1MByte 以内
close IN;
$len = length $data;
$len8 = int($len / 8);
print "/* Source file ($_) length = $len bytes */\n";
# 8 byte loop
for ($loop = 0 ; $loop < $len8 ; $loop++) {
$lorg = $loop * 8;
printf "/* %08x: */ 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x,\n"
, $lorg,
ord substr($data, $lorg, 1),
ord substr($data, $lorg+1, 1),
ord substr($data, $lorg+2, 1),
ord substr($data, $lorg+3, 1),
ord substr($data, $lorg+4, 1),
ord substr($data, $lorg+5, 1),
ord substr($data, $lorg+6, 1),
ord substr($data, $lorg+7, 1) ;
}
# 1 byte loop
$loop *= 8;
if ($loop < $len) {
printf "/* %08x: */", $loop ;
for ( ; $loop < $len ; $loop++) {
printf " 0x%02x,", ord substr($data, $loop, 1);
}
printf "\n";
}
}
総合ホームページ
Perl納戸部屋