2012-01-15 12 views
1

バイナリファイルからデータを抽出する必要があります。データは16進表記で始まります。 私はこのマーカーを見つけてからxバイトを抽出しました。バイナリファイルからデータを抽出する

PHPはテキストファイルの操作に適しています。

誰かがバイナリデータでこれを行うとよいでしょうか?

ありがとうございます!

+0

[unpack()](http://sk.php.net/manual/en/function.unpack.php)を試してください。 – Vyktor

答えて

3

あなたはパックのような特別な機能が必要かなどを展開していません。パックが検索する針を指定するのに有用かもしれないが。 phpは文字列に文字エンコーディングを適用しませんが、そのままそのままにするので、デフォルトではバイナリフレンドです。ファイルのサイズが大きい場合file_get_contentsが、その場合には大量のメモリを消費するよう

$hexMarker = 0x70000000;// or whatever 
$binaryData = file_get_contents($filename); 
$x = 5; 
$pos = strpos($binaryData, $hexMarker); 
if ($pos !== false) { 
    $start = $pos + strlen($hexMarker); 
    echo substr($binaryData, $start, $x); 
} 

あなたは、反復的な方法でfopenfreadを使用して検討することができます。とにかくそれは別の質問です。

3

unpack()pack()の機能を見てください。ここで

は、バッファにファイル全体を読み込み、2つの最初の文字の値を取得するためにunpack()を使用するサンプルです:

$fp = fopen("binary.txt", "r"); 
fseek($fp, 0, SEEK_END); 
$fs = ftell($fp); 
fseek($fp, 0, SEEK_SET); 
$binary = fread($fp, $fs); 
fclose($fp); 
$unpacked = unpack("c2", $binary);