[PHP-users 29214] Re: PHP でのバイナリの扱いについて

monry monry84 @ gmail.com
2006年 5月 16日 (火) 15:18:46 JST


森です。

> PHPのバイナリデータの扱いについて質問させてください。
>
> ファイルをバイナリデータとして
> 読み込み、その値を基にして処理を行いたいのですが、
> うまく行きません。
> 読み込みたいファイルは暫定的に4バイトの整数値を保持させています。
> (例えば0x00000001)
> この値を取得したいのです。
> (例で言うと1を取得したいです。)

(中略)

> それを以下のように書いています。
> ---
>         // ファイルをオープンする
>         $fileHandle = fopen($filename, "rb");
>
>         if ($fileHandle) {
>                 $content = fread($fileHandle, filesize($filename));
>                 // この $contentの値を元に処理したいが
>                 // 値が読み込めない
>                 var_dump($content);     // この出力は string(4) ""となる
>
>                 fclose($fileHandle);
>         }
> ---
>
> 固定長フォーマットのファイルを扱うために必要なのですが、
> このような処理をPHPで行うにはどのようにすればよろしいのでしょうか。
> マニュアル等を探してみたのですが、探し出すことが出来ませんでした。
>
> 以上、大変お手数ですがご教授願えないでしょうか。
> よろしくお願いいたします。

記憶が定かではないのですが、var_dumpはバイナリセーフな関数では
なかった筈です。
そのため、バイナリ文字列を渡すと正常な動作をしない可能性があります。
故に、bin2hexやunpackなどを用いて一度、非バイナリな値に変換を行えば
値の取得が出来るかと思われます。

例:)
[before]
ver_sump($content);

[after]
echo bin2hex($content);

お試し下さい。
--
written by T.Mori.


PHP-users メーリングリストの案内