pack în PHP

Transformă valori în date binare după un format, de exemplu un număr pe 4 octeți.

Sintaxă
pack(string $format, mixed ...$values): string

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 N când formatul cere little-endian. Octeții ies în ordine inversă. Verifică documentația formatului: N/n pentru big-endian, V/v pentru 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.