Funcțiile se împachetează și se despachetează


Funcțiile se împachetează și se despachetează

Probabil majoritatea programatorilor web nu au lucrat niciodată direct cu datele binare din php.

Și sa întâmplat nu numai pentru că, de cele mai multe ori, procesarea binară se bazează pe o varietate de extensii sau biblioteci. Adesea, acest lucru se datorează faptului că nu există prea multe informații pe Internet și ceea ce este - este dificil de perceput și este departe de nevoile unui dezvoltator specific.







Pentru a citi și a scrie date binare în php, există două funcții utile:

Funcționalul împachetează datele în formatul dorit, prin masca noastră, și scoate șirul în format binar.
Funcția de despachetare efectuează transformarea inversă. La intrare așteaptă un șir într-un format binar, iar la ieșire dă o matrice cu date în formatul cu care suntem familiarizați.

Pentru a înțelege modul în care datele sunt împachetate, trebuie să citiți despre modul în care datele sunt stocate în memorie. De exemplu, din cursul limbajului de programare C.

Avantajul datelor binare

Să spunem: Trebuie să scrieți un fișier de la zero la 256. Este important ca fișierul să fie citit cu ușurință de programe în alte limbi și că dimensiunea ocupă un spațiu minim.

Notați datele







În mod tradițional, vom scrie ceva de genul:

Ambalarea fiecare octet separat, am face acest lucru:

Acum, să comparăm dimensiunile fișierelor care rezultă:

Ie fișierul în care am împachetat toate valorile mai puțin în octeți, aproape de trei ori mai mici decât fișierul în care toate valorile au fost scrise ca șir.

Acesta este modul în care fișierul este stocat în mod obișnuit:

Și în acest fișier valorile au fost împachetate în char:

Un dezvoltator atent va observa imediat motivul acestei umflături a dosarului.

Acesta este, desigur, un simbol 0A. Folosit ca separator de valori (0x0A = 10 = caracter de linie nouă) și că fiecare dintre caracterele din variabila este stocat în octetul său. De exemplu, când doriți să stocați numărul 248, se scriu 3 octeți 32 34 38.

Citiți datele

Acum, când încercați să citiți date din fișiere, este posibil să aveți dificultăți în citirea datelor ambalate. Pentru a le prinde citim datele de genul:

După cum probabil ați observat, funcția pachetului are două argumente: un șir de format și o valoare sau mai multe valori care trebuie ambalate.

Pentru a evalua flexibilitatea datelor de ambalare, să încercăm să rezolvăm această problemă.

Trebuie să implementăm schimbul de date între programele scrise în diferite limbi.

Deci, vom împacheta o matrice care conține numere și șiruri de caractere. Rețineți că dacă știm dimensiunea pentru numere, cel puțin presupuneți că numărul trebuie să se încadreze în tipul de caractere, adică de la 0 la 256. Acest șir poate conține orice număr de caractere.

Pentru simplitate, presupunem că șirul ar trebui să se potrivească, de asemenea, în 256 de caractere, apoi putem scrie numărul de caractere din șir într-o variabilă de tip char.

Acesta este modul în care arată fișierul salvat

Să încercăm să citim dosarul acum

Iar la ieșire obținem următoarea matrice:

După cum puteți vedea, totul este simplu, chiar și structurile binare complexe sunt destul de ușor de analizat pe php.







Articole similare

Trimiteți-le prietenilor: