代码之家  ›  专栏  ›  技术社区  ›  canni

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

  •  1
  • canni  · 技术社区  · 14 年前

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

    文件结构必须由多个配置设置组成(每个参数1个),每个设置的形式如下:

    • 长度
    • 价值

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

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

    如何将该表解析为二进制格式? 第二种方法,如何将二进制文件解析为php数组格式?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Marc B    14 年前

    这就是 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);