生成具有给定结构的二进制文件

时间:2010-08-30 22:38:13

标签: php binary binaryfiles binary-data fileparsing

我有一个使用二进制格式样式配置的设备,我必须动态生成这些文件。

文件结构必须包含许多配置设置(每个参数1个):

  • 类型
  • 长度

其中:

  • 类型:是一个单八位字节的标识符,用于定义参数
  • 长度:是一个单个八位字节,包含八位字节中值字段的长度(不包括类型和长度字段)
  • 值:从1到254个八位字节,包含参数
  • 的特定值

我有一张相应的表格

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

如何将该表解析为该二进制格式? 而且,第二种方式,如何解析那个二进制文件,回到php数组格式?

1 个答案:

答案 0 :(得分: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);