Generar archivo binario con estructura dada
-
25-09-2019 - |
Pregunta
tengo una bruja dispositivo config utilización estilo de formato binario, y tengo que generar archivos en la marcha.
estructura de archivos debe consistir en un número de parámetros de configuración (1 por parámetro) cada uno de la forma:
- Tipo
- Longitud
- Valor
donde:
- Tipo: es un identificador de un solo octeto que define el parámetro
- Longitud: es un solo octeto que contiene la longitud del campo de valor en octetos (sin incluir los campos de tipo y longitud)
- Valor: es de uno a 254 octetos que contienen el valor específico para el parámetro
tengo una tabla que corresponde
Type_code[int] => { Type_length[int] => Value[int/string/hex/etc.] }
Cómo analizar esa mesa a ese formato binario? Y, en segundo camino, cómo analizar el archivo binario, para volver php formato de matriz?
Solución
No es la empacar / funciones de desempaquetado que pueden traducir entre varios formatos binario / hexadecimal / octal / cuerda. Leer un trozo del archivo, extraer bits necesarios con deshacer las maletas, y trabajar desde allí.
$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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow