2010-08-30 79 views
1

我有一個設備女巫使用二進制格式樣式配置,我必須生成該文件即時。生成給定結構的二進制文件

文件結構必須由許多的配置設置(1每個參數),每個以下形式的的:

  • 類型
  • 長度

其中:

  • 類型:是一個八位字節標識符它定義了參數
  • 長度:是含有在八位位組(不包括類型和長度字段)的值字段的長度的單個八位字節
  • 值:是由含有特定的值的參數的一個〜254個八位位組

我有一個相應的表

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

如何解析表二進制格式? 第二種方式,如何解析該二進制文件,以php數組格式返回?

回答

2

有可以在各種二進制/十六進制/八進制/字符串格式之間進行轉換的函數pack/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); 
相關問題