2

我有一个使用二进制格式样式配置的设备,我必须即时生成该文件。

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

  • 类型
  • 长度
  • 价值

在哪里:

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

我有对应的表

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

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

4

1 回答 1

2

有可以在各种二进制/十六进制/八进制/字符串格式之间转换的打包/解包函数。读取文件的一部分,使用 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);
于 2010-08-30T22:58:06.523 回答