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?

Foi útil?

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
scroll top