Gerar arquivo binário com dada estrutura
-
25-09-2019 - |
Pergunta
Eu tenho uma configuração de estilo de formato binário de bruxa de dispositivo e tenho que gerar esses arquivos na fly-fly.
A estrutura do arquivo deve consistir em várias definições de configuração (1 por parâmetro) cada um dos formulários:
- Modelo
- Comprimento
- Valor
Onde:
- Tipo: é um identificador de istet único que define o parâmetro
- Comprimento: é um único octeto que contém o comprimento do campo de valor em octetos (sem incluir campos de tipo e comprimento)
- Valor: é de um a 254 octetos contendo o valor específico para o parâmetro
Eu tenho uma mesa correspondente
Type_code[int] => { Type_length[int] => Value[int/string/hex/etc.] }
Como analisar essa tabela para esse formato binário? E, de segunda maneira, como analisar esse arquivo binário, para o formato de matriz PHP de volta?
Solução
Lá está o pacote/Desembore Funções que podem traduzir entre vários formatos binários/hexadecimais/octa/string. Leia um pedaço do arquivo, extraia bits necessários com descompactação e trabalhe a partir daí.
$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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow