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().

Hosting by: hurra.com
Generated: 2007-01-26 18:00:48