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ódigo Descripción a cadena completada con caracteres
NUL A cadena completada con
espacios h cadena Hex, nibble bajo
primero H cadena Hex, nibble alto
primero c caracter con signo C caracter sin signo s short con signo (siempre de 16
bits, orden de bytes de máquina) S short sin signo (siempre de 16
bits, orden de bytes de máquina) n short sin signo (siempre de 16
bits, byte más significativo primero) v short sin signo (siempre de 16
bits, byte menos significativo primero) i entero con signo (tamaño y
orden de bytes dependiente de la máquina) I entero sin signo (tamaño y
orden de bytes dependiente de la máquina) l long con signo (siempre de 32
bits, orden de bytes de máquina) L long sin signo (siempre de 32
bits, orden de bytes de máquina) N long sin signo (siempre de 32
bits, byte más significativo primero) V long sin signo (siempre de 32
bits, byte menos significativo primero) f flotante (tamaño y
representación dependiente de la
máquina) d doble (tamaño y
representación dependiente de la
máquina) x byte NUL X Copiar 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() .