pack

pack

(PHP 3, PHP 4, PHP 5)

pack -- Empaquetar datos en una cadena binaria

Descripci贸n

string pack ( string formato [, mixed args [, mixed ...]] )

Empaquetar los argumentas dados en una cadena binaria de acuerdo a formato. Devuelve la cadena binaria que contiene los datos.

La idea de esta funci贸n fue tomada de Perl y todos los c贸digos de formato funcionan igual que en aqu茅l lenguaje, sin embargo, existen algunos c贸digos de formato faltantes, como el c贸digo "u" de Perl. La cadena de formato consiste de c贸digos de formato seguidos por un argumento opcional de repetici贸n. El argumento de repetici贸n puede ser un valor entero o * para la repetici贸n hasta el final de los datos de entrada. En el caso de a, A, h, y H el conteo de repetici贸n especifica cu谩ntos caracteres de un argumento de datos son tomados, para @ es la posici贸n absoluta en d贸nde colocar el siguiente dato, para todos los dem谩s el conteo de repetici贸n especifica cu谩ntos argumentos de datos son consumidos y empaquetados en la cadena binaria resultante. Actualmente se han implementado los siguientes

Tabla 1. Caracteres de formato de pack()

C贸digoDescripci贸n
acadena completada con caracteres NUL
Acadena completada con espacios
hcadena Hex, nibble bajo primero
Hcadena Hex, nibble alto primero
ccaracter con signo
Ccaracter sin signo
sshort con signo (siempre de 16 bits, orden de bytes de m谩quina)
Sshort sin signo (siempre de 16 bits, orden de bytes de m谩quina)
nshort sin signo (siempre de 16 bits, byte m谩s significativo primero)
vshort sin signo (siempre de 16 bits, byte menos significativo primero)
ientero con signo (tama帽o y orden de bytes dependiente de la m谩quina)
Ientero sin signo (tama帽o y orden de bytes dependiente de la m谩quina)
llong con signo (siempre de 32 bits, orden de bytes de m谩quina)
Llong sin signo (siempre de 32 bits, orden de bytes de m谩quina)
Nlong sin signo (siempre de 32 bits, byte m谩s significativo primero)
Vlong sin signo (siempre de 32 bits, byte menos significativo primero)
fflotante (tama帽o y representaci贸n dependiente de la m谩quina)
ddoble (tama帽o y representaci贸n dependiente de la m谩quina)
xbyte NUL
XCopiar un byte
@relleno de NUL hasta una posici贸n absoluta

Ejemplo 1. Ejemplo de pack()

<?php
$datos_binarios
= pack("nvc*", 0x1234, 0x5678, 65, 66);
?>

La cadena binaria resultante tendr谩 6 bytes de longitud y contendr谩 la secuencia de bytes 0x12, 0x34, 0x78, 0x56, 0x41, 0x42.

Note que la distinci贸n entre valores con signo y sin signo s贸lo afecta a la funci贸n unpack(), mientras que la funci贸n pack() entrega el mismo resultado para c贸digos de formato con signo y sin signo.

Tambi茅n note que PHP almacena valores integer internamente como valores con signo de un tama帽o dependiente de la m谩quina. Si le entrega un valor entero sin signo demasiado largo para ser almacenado en esa forma, es convertido a un valor float, lo cual frecuentemente produce un resultado inesperado.

Vea tambi茅n unpack().