2010-08-30 64 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); 
相关问题