ソース埋め込み用ファイルダンプ

バイナリーファイルを、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納戸部屋