Ce face pack
pack scrie numere și texte în forma binară cerută de formate de fișiere sau protocoale de rețea. Fiecare literă din format descrie o valoare: C octet, n număr pe 2 octeți (ordinea de rețea), N număr pe 4 octeți (ordinea de rețea), v/V aceleași în ordinea little-endian, A5 text completat cu spații până la 5 caractere, a5 completat cu octeți nuli.
Operația inversă este unpack.
Parametri
| Parametru | Descriere |
|---|---|
$format |
Formatul, de exemplu "Nn". |
$values |
Valorile, în ordinea din format. |
Ce returnează
Datele binare, ca text.
Exemple
Exemplul 1: Numere în octeți
Afișăm octeții în hexazecimal cu bin2hex, pentru că datele binare nu se pot citi direct.
<?php
echo bin2hex(pack("N", 1024)) . "\n";
echo bin2hex(pack("n", 2026)) . "\n";
echo bin2hex(pack("v", 2026));
Rezultat
00000400
07ea
ea07
Exemplul 2: Înregistrare de lungime fixă
<?php
$date = pack("NnA8", 1024, 3, "Iasi");
echo strlen($date) . " octeți\n";
echo bin2hex($date);
Rezultat
14 octeți
0000040000034961736920202020
Greșeli frecvente
- Folosești
Ncând formatul cere little-endian. Octeții ies în ordine inversă. Verifică documentația formatului:N/npentru big-endian,V/vpentru little-endian.
Comenzi înrudite
unpack: Citește numere și texte din date binare, după un format.bin2hex / hex2bin: bin2hex transformă un text (sau date binare) în cifre hexazecimale, iar hex2bin face inversul.fwrite / fputs: Scrie un text într-un fișier deschis cu fopen. fputs este același lucru, cu alt nume.