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

Php 生成具有给定结构的二进制文件,php,binary,binaryfiles,binary-data,fileparsing,Php,Binary,Binaryfiles,Binary Data,Fileparsing,我有一个使用二进制格式样式配置的设备,我必须动态生成这些文件 文件结构必须包含多个配置设置(每个参数1个),每种形式: 类型 长度 价值观 其中: 类型:是定义参数的单个八位字节标识符 长度:是一个八位字节,包含八位字节中值字段的长度(不包括类型和长度字段) 值:从1到254个八位字节,包含参数的特定值 我有一个对应的表 Type_code[int] => { Type_length[int] => Value[int/string/hex/etc.] } 如何将该表解析

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

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

  • 类型
  • 长度
  • 价值观
其中:

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

 Type_code[int] => { Type_length[int] => Value[int/string/hex/etc.] }
如何将该表解析为二进制格式? 第二种方法是,如何将二进制文件解析为php数组格式?

有一些函数可以在各种二进制/十六进制/八进制/字符串格式之间进行转换。读取文件的一部分,使用解包提取必要的位,然后从那里开始工作

$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);