Parsarea unui fișier binar în PHP

Fișierele de date binare codate sunt utilizate pentru a programa în limbaje de programare de nivel scăzut utilizate la nivel de știință, cum ar fi C, care nu pot fi traduse coerent în format text.

Folosind orice limbă de nivel inferior pentru a stoca o valoare dată, codul binar trebuie folosit odată ce îl încărcați într-un editor de text pentru al înregistra sau citi.

Un fișier binar nu poate fi citit, deoarece este în format binar brut în limbi precum Pascal. Prin urmare, webmasterii folosesc PHP pentru a citi și scrie fișierele ca text. Trebuie să utilizați o funcție specifică pentru a vă recupera valorile.

PHP utilizează o funcție unică denumită unpack (). După ce primul argument de tip de date este declarat, trebuie să recuperați și să creați un al doilea argument ca șirul din care doriți să preluați datele. Datele recuperabile trebuie să fie în argumente simbolice.

Când utilizați limbi de nivel scăzut, cum ar fi C sau Pascal, este o procedură comună de a stoca datele într-un fișier binar (o înregistrare care nu poate fi tradusă în text).

Folosind limba C, dacă doriți să salvați valoarea 500 într-un fișier, codul va fi după cum urmează:

 #include int main () {int val = 500; FILE * fp = fopen ("fișier", "wb"); fwrite (& val, dimensiunea (int), 1, fp); // stocare val în "fișier" fclose (fp); retur 0; } 

Când deschideți acest fișier special cu un editor de text, este posibil să îl considerați necitit deoarece valoarea dvs. nu este salvată ca text, ci în forma sa binară brută.

Dar, dacă utilizați PHP, este adesea necesar să preluați din când în când valorile stocate ca binare. Cu toate acestea, PHP citește și scrie în fișiere ca text. Trebuie să utilizați o funcție specifică pentru a vă recupera valorile.

Soluția:

Funcția de despachetare () poate fi utilizată pentru a rezolva această problemă. Mai întâi trebuie să declarați tipul de date pe care doriți să îl recuperați și apoi șirul din care doriți să preluați datele.

Tipul de date care trebuie recuperate trebuie să fie detaliat utilizând simbolul corespunzător. De exemplu, pentru a prelua un număr întreg semnat, utilizați caracterul i .

Deci, dacă folosim fișierul pe care l-am salvat în exemplul de mai sus, iată codul care ne readuce valoarea:

    • Notite importante:
  • Dimensiunea datelor se poate modifica în funcție de arhitectura procesorului (Sparc, ARM, PowerPC).
    • Un program scris în C folosește numere întregi de dimensiuni diferite, de la 32 biți la 64 de biți.
    • Aranjarea datelor nu poate fi aceeași. Unele mașini stochează date în Big Endian, altele în Little Endian.
    • Dimensiunea datelor poate varia în funcție de compilator
    • Funcția de despachetare returnează o matrice mult mai elaborată decât cea dată ca exemplu aici. În cazul nostru, cu o valoare cerută, valoarea noastră este în compensarea 1 a matricei.
  • Tipuri de date pentru un PC pe 32 de biți
    • Iată un tabel care prezintă datele înregistrate de un program C compilat pentru un PC pe 32 de biți:
    • char : c
    • caractere nesemnate : C
    • scurt : s
    • nesemnate scurte : S
    • int : I
    • nesignificat int : L
    • float : f
    • dublu : d

Articolul Precedent Articolul Următor

Cele Mai Importante Sfaturi