Analisando um arquivo binário em PHP

Os arquivos de dados de código binário são usados ​​para programar em linguagens de programação de baixo nível usadas cientificamente, como C, que não podem ser traduzidas coerentemente em formato de texto.

Usando qualquer linguagem de baixo nível para armazenar um determinado valor, o código binário deve ser usado quando você carregá-lo em um editor de texto para registrá-lo ou lê-lo.

Um arquivo binário não pode ser lido como está no formato binário bruto em linguagens como Pascal. Portanto, os webmasters usam o PHP para ler e gravar os arquivos como texto. Uma função específica deve ser usada para recuperar seus valores.

O PHP usa uma função exclusiva chamada unpack (). Depois que o primeiro argumento de tipo de dados é declarado, você precisa recuperar e criar um segundo argumento como a string da qual deseja recuperar os dados. Os dados recuperáveis ​​devem estar em argumentos simbólicos.

Ao usar linguagens de baixo nível como C ou Pascal, é um procedimento comum para armazenar dados em um arquivo binário (um registro que não pode ser traduzido em texto).

Usando a linguagem C, se você quiser salvar o valor 500 em um arquivo, o código será o seguinte:

 #include int main () {int val = 500; FILE * fp = fopen ("arquivo", "wb"); fwrite (& val, sizeof (int), 1, fp); // armazena val em "arquivo" fclose (fp); return 0; } 

Ao abrir esse arquivo específico com um editor de texto, você pode achá-lo ilegível porque seu valor não é salvo como texto, mas em sua forma bruta binária.

Mas, se você usa PHP, muitas vezes é necessário recuperar valores armazenados como binários de tempos em tempos. No entanto, o PHP lê e escreve nos arquivos como texto. Uma função específica deve ser usada para recuperar seus valores.

A solução:

A função unpack () pode ser usada para resolver este tipo de problema. Você deve primeiro declarar o tipo de dados que deseja recuperar e, em seguida, a sequência da qual deseja recuperar os dados.

O tipo de dados a recuperar deve ser detalhado usando o símbolo correspondente. Por exemplo, para recuperar um inteiro assinado, use o caractere i .

Então, se usarmos o arquivo que salvamos no exemplo acima, aqui está o código para recuperar nosso valor:

    • Anotações importantes:
  • O tamanho dos dados pode mudar dependendo da arquitetura do processador (Sparc, ARM, PowerPC).
    • Um programa escrito em C usa números inteiros de tamanhos diferentes de 32 bits a 64 bits.
    • A organização dos dados pode não ser a mesma. Algumas máquinas armazenam dados em Big Endian, outras em Little Endian.
    • O tamanho dos dados pode variar dependendo do compilador
    • A função descompactar retorna um array um pouco mais elaborado que o dado como exemplo aqui. No nosso caso, com um valor solicitado, nosso valor está no deslocamento 1 do array.
  • Tipos de dados para um PC de 32 bits
    • Aqui está uma tabela mostrando os dados gravados por um programa C compilado para um PC de 32 bits:
    • char : c
    • car anônimo : C
    • curto : s
    • curta não assinada : S
    • int : eu
    • int não assinado : L
    • float : f
    • duplo : d

Artigo Anterior Próximo Artigo

Principais Dicas