2

バイナリ形式の設定を使用するデバイス ウィッチがあり、そのファイルをオンザフライで生成する必要があります。

ファイル構造は、次の形式のいくつかの構成設定 (パラメーターごとに 1 つ) で構成する必要があります。

  • タイプ
  • 長さ
  • 価値

どこ:

  • タイプ: パラメータを定義する単一オクテットの識別子です
  • 長さ: オクテット単位の値フィールドの長さを含む単一のオクテットです (タイプ フィールドと長さフィールドは含まれません)。
  • 値: パラメータの特定の値を含む 1 ~ 254 オクテットです。

私は対応するテーブルを持っています

 Type_code[int] => { Type_length[int] => Value[int/string/hex/etc.] }

そのテーブルをそのバイナリ形式に解析する方法は? そして、2 番目の方法として、そのバイナリ ファイルを解析して、php 配列形式に戻す方法を教えてください。

4

1 に答える 1

2

さまざまなバイナリ/16 進数/8 進数/文字列形式間で変換できるpack / unpack関数があります。ファイルのチャンクを読み取り、unpack で必要なビットを抽出し、そこから作業します。

$fh = fopen('data.txt', 'rb'); // b for binary-safe

// read 2 bytes, extract code/length, then read $length more bytes to get $value
while(($data = fread($fh, 2)) !== EOF)) { 
    list($code, $length) = unpack('CC', $data);
    $data = fread($fh, $length);

    // do stuff
}
fclose($fh);
于 2010-08-30T22:58:06.523 に答える