バイナリ構造体とは
バイナリ構造体とは、ある一塊のバイナリデータ(0と1の状態)とイコールみたいです。
Perlでのバイナリ構造体とは、pack関数のリターン値のことです。
pack関数は、第二引数のリスト値を、第一引数のテンプレートに従って、バイナリ構造体(リターン値)に変換します。
たとえば、以下は2進数文字列『"1111"』を、テンプレート『"B"等』に従って、バイナリ構造体に変換しています。
各行の右側のコメントは、単なるprint結果でなく、バイナリ構造体の中を16進数で表したものです。
$strbin = "1111"; print $strbin; # 31313131 print pack("B", $strbin), "\n"; # 80 print pack("B*", $strbin), "\n"; # F0 print pack("B32", $strbin), "\n"; # F0000000 print pack("b", $strbin), "\n"; # 01 print pack("b*", $strbin), "\n"; # 0F print pack("b32", $strbin), "\n"; # 0F000000 print pack("B*", substr("0" x 32 . $strbin, -32)), "\n"; # 0000000F print pack("B32", substr("0" x 32 . $strbin, -32)), "\n"; # 0000000F
ちなみに、2進数文字列を10進数文字列に変換するには、以下の感じです。
print unpack("N", pack("B32", substr("0" x 32 . $strbin, -32))); # 3135