メモの祭り

最近はメモすることも忘れ。。。

16進数文字列をバイナリに変換

もっと良い書き方があるかと思うが
とりあえず、良くググるので。。。

◆ソース

# Input file
$in_file="source.txt";
# Output file
$out_file="dist.bin";

# Data Read
  @bin_list=();
  open(IN,$in_file);
  while(<IN>){
    chomp($_);
    ($a0,$a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$a10,$a11,$a12,$a13,$a14,$a15)=split / /;
    push(@bin_list,pack("C",hex($a0)));
    push(@bin_list,pack("C",hex($a1)));
    push(@bin_list,pack("C",hex($a2)));
    push(@bin_list,pack("C",hex($a3)));
    push(@bin_list,pack("C",hex($a4)));
    push(@bin_list,pack("C",hex($a5)));
    push(@bin_list,pack("C",hex($a6)));
    push(@bin_list,pack("C",hex($a7)));
    push(@bin_list,pack("C",hex($a8)));
    push(@bin_list,pack("C",hex($a9)));
    push(@bin_list,pack("C",hex($a10)));
    push(@bin_list,pack("C",hex($a11)));
    push(@bin_list,pack("C",hex($a12)));
    push(@bin_list,pack("C",hex($a13)));
    push(@bin_list,pack("C",hex($a14)));
    push(@bin_list,pack("C",hex($a15)));
}
close IN;

#Save
  open(OUT,">$out_file");
  binmode OUT;
  foreach(@bin_list)
  {
    print OUT "$_";
  }
  close OUT;


◆読込み元データ
アドレス無しで

00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF

と書く