- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php のバイナリデータ操作について)
phpのバイナリデータ操作で詰まっています
このQ&Aのポイント
- バイナリデータ操作で詰まっている方へ。phpのバイナリデータ操作で2byteのデータを4bitずつに取り出し、データをチェックする方法を教えてください。
- バイナリデータ操作の方法を教えてください。phpでバイナリファイルから読み込んだ2byteのデータを4bitずつに取り出し、データをチェックする方法を試してみましたがうまくいきません。
- phpのバイナリデータ操作に詳しい方へ。バイナリファイルから読み込んだデータをマスクしてシフトし、2byteのデータを4bitずつに取り出す方法を教えてください。試してみた結果、意図したデータではなくなってしまいました。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まずは衝撃の実験結果から。 http://ideone.com/MSHFT そう。「ABCDではない」のです。 …つまり、「0xFFFF」と論理積をとっても、それは「下位16bitではない」のです。 というわけで、下位16bitがとれるよう、16bit全てが1となるようなものを pack関数にかましたものとビット演算を行ってみると自分の希望通りのものが出力されました。(このサイトPHP 5.2.11でhex2binの対応バージョンが書かれていないので、多分使えないのでしょう) http://ideone.com/hbV1U
その他の回答 (1)
- shimix
- ベストアンサー率54% (865/1590)
回答No.1
私だったら、こんな感じでバラしますかねぇ。 <?php $str = chr(126) . chr(14); $out = array(); for ($i = 0; $i < strlen($str); $i++) { $tmp = bin2hex(substr($str, $i, 1)); $tmp = (strlen($tmp) == 1) ? '0' . $tmp : $tmp; $out[] = substr($tmp, 0, 1); $out[] = substr($tmp, 1, 1); } print "<pre>"; print_r($out); print "</pre>"; ?> >4bitずつに取り出して、データをチェックしたいです。 のチェックがどういうものか次第で最適解も変わってくると思います(上記は文字列で比較する前提です)。どういうチェックをするかを書いていただくといいかもしれません。
質問者
お礼
回答遅れました。すみません。 サンプルまで作っていただき ありがとうございます。 参考にさせていただきました。
お礼
回答遅れました。すみません。 衝撃でした。 ありがとうございます。