このコード:
<?php
$string = "I love chicken.";
$binary = pack("a15", $string);
echo $binary;
?>
「私は鶏肉が好きです」を出力します。それは正常ですか?バイナーっぽい意味不明なものを出力するべきではありませんか?
はい、それは正常です。15 文字の文字列を 15 バイトの NULL パディング文字列にパックしているので、「意味不明」はありません (元の文字列が「そのように」メモリに格納されているため)。パック整数など
なんで?文字列の「バイナリ」表現 (シングルバイト文字セット) はまさにその文字列であるため、この場合は何も変換する必要はありません。
ASCII 文字列を同じ長さの ASCII 文字列としてパックしている場合はそうではありません。a15 を a16 に変更すると、pack は出力を null で埋めます。これは、echo では表示されませんが、var_dump() を実行すると表示されます。