PHP pack()Funciones

PHP Misc 参考手册Manual de referencia PHP Misc

Ejemplos

Empaquetar datos en una cadena binaria:

<?php
echo pack("C3",80,72,80);
?>

Ejecutar ejemplo »

Definición y uso

La función pack() empaqueta datos en una cadena binaria.

Esto es muy útil en la transmisión de red, el procesamiento de archivos y el almacenamiento de datos, especialmente cuando se necesita un control preciso del formato de datos y del orden de bytes (endianidad).


Sintaxis

string pack(string $format, mixed $arg1 [, mixed $arg2, ...])
  • $format: una cadena que especifica cómo empaquetar losarg1, arg2parámetros, ... dados. Cada carácter representa un tipo de datos y un tamaño.
  • $arg1, $arg2, ...: los datos a empaquetar. Pueden ser enteros, números de punto flotante, cadenas, etc.

La función pack() devuelve la cadena binaria empaquetada, o false si se produce un error.


Parámetros Descripción
format Obligatorio. Especifica el formato utilizado al empaquetar los datos.

Valores posibles:

Enteros:

  • c: carácter con signo (1 byte).
  • C: carácter sin signo (1 byte).
  • s: entero corto con signo (2 bytes, orden de bytes del host).
  • S: entero corto sin signo (2 bytes, orden de bytes del host).
  • l: entero largo con signo (4 bytes, orden de bytes del host).
  • L: entero largo sin signo (4 bytes, orden de bytes del host).
  • q: entero largo largo con signo (8 bytes, orden de bytes del host).
  • Q: entero largo largo sin signo (8 bytes, orden de bytes del host).

Números de punto flotante:

  • f: número de punto flotante de precisión simple (4 bytes, orden de bytes del host).
  • d: número de punto flotante de doble precisión (8 bytes, orden de bytes del host).

Cadenas y otros tipos:

  • x: byte NUL (byte de relleno, sin parámetro).
  • a: cadena terminada en NUL (toma el parámetro como cadena).
  • A: cadena rellena con espacios (toma el parámetro como cadena).
  • @: bytes NUL rellenos hasta la longitud especificada.
args+ Opcional. Especifica uno o más parámetros a empaquetar.

Detalles técnicos

Valor de retorno: Devuelve la cadena binaria que contiene los datos.
Versión de PHP: 4+
Registro de cambios: En PHP 5.5 se añadió el código "Z", que tiene la misma funcionalidad que "a" para compatibilidad con Perl.


Más ejemplos

A continuación se muestran algunos ejemplos de uso de la función pack().

Empaquetar un entero corto sin signo y una cadena:

Ejemplo

$data = pack('S', 65535); // Empaquetar entero corto sin signo 65535
echo bin2hex($data); // Salida: ffff

Empaquetar un entero largo con signo y una cadena:

Ejemplo

$data = pack('l', -2147483648); // Empaquetar entero largo con signo -2147483648
echo bin2hex($data); // Salida: 0000000080000000

Empaquetar un número de punto flotante y una cadena:

Ejemplo

$data = pack('f', 3.14); // Empaquetar número de punto flotante 3.14
echo bin2hex($data); // Salida: 4048f5c3

Precauciones

  • pack()Esta función es una potente herramienta para convertir datos a formato binario, pero debes asegurarte de entender el significado y el uso de cada carácter del formato.
  • Problema de endianidad (orden de bytes): en diferentes sistemas, la representación de enteros y números de punto flotante puede diferir; se puede utilizarpack()yunpack()la función para garantizar la transmisión y el análisis correctos de los datos entre diferentes sistemas.
  • Se puede utilizarbin2hex()la función para convertir datos binarios en una cadena hexadecimal para su salida y depuración.
PHP Misc 参考手册Manual de referencia PHP Misc Otras extensiones