1

POST データを php に送信する C++ プログラムを作成しました。私のデータはバイナリで 123456、つまり 0x0001e240 です。

私のphpファイルは次のようになります

$f=fopen("php://input", "r");
if (!$f) die ("cannot open");
$data = fread($f, 4);
echo $data;

私の受信プログラム (C++) では、エコーされたデータが正確に 0x0001e240 であることを確認できます。したがって、php は純粋なバイナリを受け入れて $data に保存したと思います。

ただし、phpで123456を取得したいです。bindec、hexdec などの関数を試しましたが、どれも機能しません。$data から数値を取得するにはどうすればよいですか。

また、php でエンディアンを気にする必要がありますか? 現在、Windows環境でローカルで作業していますが、最終的にコードをクラウドに配置します。

編集

$f=fopen("test.bin", "rb");
if (!$f) die ("cannot open");
$data = fread($f, 4);
echo $data;

ここで、test.bin は 0x0001e240 を含む bin ファイルです。$data に 0x00、0x01、0xe2、0x40 の ASCII を合成した文字列が入っているようです。それらを数値にするにはどうすればよいですか?

4

1 に答える 1

1

使用できますunpack

$num = unpack('n', $data);

符号なし整数には大文字を使用し、リトルエンディアンにはv(または) を使用します。Vはい、エンディアンについて心配する必要があります。それが何であるかを見つけて、それに固執してください。

于 2013-07-09T19:26:21.400 に答える