Saltar al contenido

unpack()

En este artículo, nos centraremos en la función unpack() de PHP. Le proporcionaremos una visión general de la función, cómo funciona y ejemplos de su uso.

Introducción a la función unpack()

La función unpack() es una función integrada en PHP que se utiliza para desempaquetar datos binarios en variables de PHP. Es una herramienta poderosa que se puede usar para extraer datos de archivos binarios o protocolos de red.

La función unpack() toma dos argumentos: el formato de los datos binarios a desempaquetar y los datos binarios a desempaquetar.

Cómo usar la función unpack()

Usar la función unpack() es muy sencillo. Solo necesita llamar a la función y pasar el formato de los datos binarios a desempaquetar y los propios datos binarios. Aquí hay un ejemplo:

¿Cómo usar la función unpack()?

php
<?php
$data = "\x01\x02\x03\x04\x05";
$result = unpack("C*", $data);
print_r($result);
?>

En este ejemplo, tenemos una cadena de datos binarios $data que contiene los bytes \x01\x02\x03\x04\x05. Luego llamamos a la función unpack() con una cadena de formato "C*" que le indica a la función que desempaquete los datos como un array de caracteres sin signo. El carácter * se utiliza para indicar que queremos desempaquetar todos los datos. Cuando no se especifican claves en la cadena de formato, unpack() devuelve un array con claves numéricas que comienzan desde 1. Asignamos el array resultante a una variable $result y luego mostramos el contenido del array usando print_r().

La salida de este script será:


console
Array
(
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
    [5] => 5
)

Esto muestra que la función unpack() ha desempaquetado correctamente los datos binarios en un array de caracteres sin signo.

Uso avanzado

La función unpack() también se puede usar en escenarios más avanzados. Por ejemplo, puede usar la función para desempaquetar datos en diferentes tipos de variables de PHP. Aquí hay un ejemplo:

Ejemplo de PHP unpack()

php
<?php
$data = "\x01\x02\x03\x04\x05\x06\x07\x08";
$result = unpack("C2chars/Sint/Nlong", $data);
print_r($result);
?>

En este ejemplo, tenemos una cadena de datos binarios $data que contiene los bytes \x01\x02\x03\x04\x05\x06\x07\x08. Luego llamamos a la función unpack() con una cadena de formato "C2chars/Sint/Nlong". Esto le indica a la función que desempaquete los primeros dos bytes en las claves chars1 y chars2, los siguientes dos bytes en int y los últimos cuatro bytes en long. Tenga en cuenta que el orden de los bytes de los enteros depende de la arquitectura del sistema. Por defecto, S utiliza el orden de bytes nativo, mientras que N fuerza el orden big-endian. Para garantizar resultados consistentes en diferentes sistemas, puede agregar modificadores de orden de bytes explícitos (por ejemplo, V para little-endian, n para network/big-endian) a los especificadores de formato. Asignamos el array resultante a una variable $result y luego mostramos el contenido del array usando print_r().

La salida de este script será:


console
Array
(
    [chars1] => 1
    [chars2] => 2
    [int] => 1027
    [long] => 84281096
)

Esto muestra que la función unpack() ha desempaquetado correctamente los datos binarios en un array de diferentes tipos de variables de PHP.

Conclusión

En conclusión, la función unpack() es una herramienta poderosa para desempaquetar datos binarios en variables de PHP. Al comprender cómo usar la función y sus escenarios de uso avanzado, puede aprovechar esta función para extraer datos de archivos binarios o protocolos de red en sus scripts de PHP.

Práctica

¿Qué hace la función 'unpack' de PHP?

Vista previa dual-run — compárala con las rutas Symfony en producción.