2013年1月2日水曜日

[Perl]バイナリファイルの作成

pack 関数を使用してバイナリデータを作成しファイルに書き出す。
use utf8;
use strict;
my $buf, my $num, my $num10;
# バイナリモードであることを明示する
open(OUT, "> test.bin");
binmode OUT;
# 16 進数を 1 byte ずつ書き込む
$buf = pack("cccc", 0x31, 0x32, 0x33, 0x34);
print(OUT $buf);
# 16 進数を 4 byte 書き込む ("N" は Network byte order, Big endian)
$buf = pack("N", 0x35363738);
print(OUT $buf);
# 数値変数を 4 byte 書き込む
$num = 0x393a3b3c;
$buf = pack("N", $num);
print(OUT $buf);
# 文字列 16 進数を 4 byte 書き込む
$num = "41424344";
$num10 = hex($num);
$buf = pack("N", $num10);
print(OUT $buf);
close(OUT);
結果は以下のようなデータとなる。
         +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
-------+------------------------------------------------
000000 | 31 32 33 34 35 36 37 38 39 3A 3B 3C 41 42 43 44

0 件のコメント:

コメントを投稿