バイナリデータと文字列の相互変換

なんとなく機会がありそうで無い感じ。あまり意味は無い
※ 当たり前だが、純粋なバイナリファイルを16進文字列に変換するとデータ量は増える

<?php
// この例はバイナリのファイルを、文字列を介して複製しているだけ

// バイナリファイルを開く  
$file = "samplh.jpg";  
$data = implode("", file($file) );

// バイナリを16進の文字列に変換する  
$str = bin2hex($data);

// 文字列をバイナリに変換する  
$bin = pack("H*", $str);

// 文字列から戻したバイナリをファイルに書きこむ(実質複製)  
$fp = fopen("new_" . $file, "w");  
fwrite($fp, $bin);  
fclose($fp);

?>