我有一个使用二进制格式样式配置的设备,我必须动态生成这些文件。
文件结构必须包含许多配置设置(每个参数1个):
其中:
我有一张相应的表格
Type_code[int] => { Type_length[int] => Value[int/string/hex/etc.] }
如何将该表解析为该二进制格式? 而且,第二种方式,如何解析那个二进制文件,回到php数组格式?
答案 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);