W3docs

hex2bin()

La función hex2bin() convierte una cadena hexadecimal a su representación binaria. La sintaxis de hex2bin() es la siguiente:

La función hex2bin() de PHP decodifica una cadena de dígitos hexadecimales y la convierte de vuelta a los bytes brutos que representa. Es el inverso exacto de bin2hex(): mientras que bin2hex() convierte cada byte en dos caracteres hexadecimales, hex2bin() lee esos pares de caracteres y reconstruye la cadena de bytes original. Disponible desde PHP 5.4, su sintaxis es la siguiente.

Esta página cubre la sintaxis, el valor de retorno, un ejemplo de decodificación funcional, cómo manejar entradas inválidas de forma segura y un viaje de ida y vuelta con bin2hex().

Sintaxis

string|false hex2bin ( string $string )

La función acepta un parámetro obligatorio, $string, la cadena hexadecimal a convertir. Cada par de caracteres hexadecimales (como 48) se corresponde con un byte (H). Como dos caracteres forman un byte, la longitud de la entrada debe ser par.

Valor de retorno

hex2bin() devuelve la cadena binaria decodificada en caso de éxito, o false en caso de error. Falla (y emite una advertencia) cuando la entrada tiene una longitud impar o contiene caracteres que no son dígitos hexadecimales válidos (0-9, a-f, A-F). Validar la entrada primero — como se muestra a continuación — permite evitar esas advertencias.

A continuación se muestra un ejemplo de cómo utilizar la función hex2bin():

Decodificación de una cadena hexadecimal

php— editable, runs on the server

En este ejemplo, tenemos una variable string $hex_string que contiene una cadena hexadecimal. Usamos la función hex2bin() para convertir la cadena hexadecimal a su representación binaria.

La salida de este código será:

Hello World

Como puede verse, la función hex2bin() ha convertido la cadena hexadecimal a su representación binaria, que es la cadena "Hello World".

Validación de la entrada antes de decodificar

La función hex2bin() devuelve false si la cadena de entrada contiene caracteres hexadecimales inválidos. Para manejar esta situación de forma controlada y evitar advertencias, puede validar la entrada primero con ctype_xdigit() (que verifica que cada carácter sea un dígito hexadecimal):

php— editable, runs on the server

En este ejemplo, la variable $invalid_hex_string contiene una cadena hexadecimal de longitud impar (y por tanto inválida). Usamos ctype_xdigit() para comprobar que la cadena contiene únicamente caracteres hexadecimales válidos antes de llamar a hex2bin(). Si la validación falla, mostramos un mensaje de error; de lo contrario, convertimos la cadena a binario de forma segura.

Viaje de ida y vuelta con bin2hex()

hex2bin() y bin2hex() son inversas, por lo que codificar una cadena y luego decodificarla devuelve el valor original. Esto resulta útil cuando necesita almacenar o transmitir datos binarios como texto ASCII plano (por ejemplo, en una URL o en una columna de texto) y recuperarlos más adelante:

<?php
$original = "Hello World";

$hex = bin2hex($original);   // 48656c6c6f20576f726c64
echo $hex . "\n";

$decoded = hex2bin($hex);    // Hello World
echo $decoded . "\n";

var_dump($original === $decoded); // bool(true)
?>

La salida de este código será:

48656c6c6f20576f726c64
Hello World
bool(true)

Como el valor decodificado es idéntico al original, var_dump() informa bool(true).

Cuándo utilizarla

Use hex2bin() siempre que reciba datos que fueron codificados en hexadecimal y necesite recuperar los bytes brutos — los casos más comunes incluyen leer hashes o claves almacenadas como cadenas hexadecimales, decodificar valores producidos por bin2hex() y reconstruir cargas binarias (imágenes, blobs cifrados) que fueron transportadas como texto.

Funciones relacionadas

  • bin2hex() — convierte una cadena binaria a su representación hexadecimal (el inverso de hex2bin()).
  • dechex() — convierte un entero decimal a una cadena hexadecimal.
  • hexdec() — convierte una cadena hexadecimal a un entero decimal.

Práctica

Práctica
¿Qué hace la función hex2bin() en PHP?
¿Qué hace la función hex2bin() en PHP?
Was this page helpful?