|
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 |
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