pack/unpack

理解できていなかったので、色々やってみる(scriptの文字コードEUC
まずはpack。

print pack('CC', 97, 0x61), "\n";
print pack('C2', 97, 0x61), "\n";
print pack('B16', '0110000101100001'), "\n";
print pack('H4', 6161), "\n"

実行結果。

aa
aa
aa
aa

次はunpack。

print unpack('B8', 'a'), "\n";
print unpack('H2', 'a'), "\n";
print unpack('C', 'a'), "\n"

実行結果。

01100001
61
97


10進数の2進数変換。ちょっと強引。

perl -e 'print unpack("B8", pack("C", 97)), "\n"'


unicode文字にpackするにはテンプレートにUを指定。
予想通り、UTF8フラグがつくのでフラグを落としてeuc-jpで出力。

print Encode::encode('euc-jp', pack('U', 0x3042)), "\n";