PHPによるpack関数について質問です
たとえば下記のようなコードで”あ”という文字列を保存した場合に
-
$a = pack('C*', 0xE3, 0x81, 0x82); // =あ
file_put_contents('./hoge.bin', $a);
-
できたファイルをバイナリエディタで表示すると下記のように表示されます
-
0000000: e3 81 82 ...
-
これを逆に下記のコードで$aに読み込んだ場合
-
$a = file_get_contents('./hoge.bin');
-
$aには文字列としての"あ"が読み込まれるとおもいますが、これをバイナリデータである"0xE30, x810, x82"として読み込む方法はあるのでしょうか。file_get_contentsをすると必ず文字列として読み込まれてしまうのかな、と考えておりますがあっておりますでしょうか。
また、同じような質問になりますが、下記のようなunpackのコードで
$hoge = unpack('C*hoge', $a);
引数の$aに渡すべきバイナリデータを
$a="あ";
このような文字列データから生成する方法はあるのでしょうか。
お手数ですがお分かりになるかたいらっしゃいましたらお教えいただければと思います。
<?php
$a = pack('C*', 0xE3, 0x81, 0x82); // =あ
file_put_contents('./hoge.bin', $a);
$handle = fopen('./hoge.bin', 'rb');
$data = unpack('C*', fread($handle, filesize('./hoge.bin')));
fclose($handle);
print_r($data);
?>
かな?
これで、
Array
(
[1] => 227
[2] => 129
[3] => 130
)
と表示されました。