hex2bin()
A função hex2bin() converte uma string hexadecimal em sua representação binária. Veja a sintaxe, valor de retorno e exemplos práticos.
A função PHP hex2bin() decodifica uma string de dígitos hexadecimais de volta para os bytes brutos que eles representam. É o inverso exato de bin2hex(): enquanto bin2hex() transforma cada byte em dois caracteres hexadecimais, hex2bin() lê esses pares de caracteres e reconstrói a string de bytes original. Disponível desde o PHP 5.4, sua sintaxe é a seguinte.
Esta página abrange a sintaxe, o valor de retorno, um exemplo prático de decodificação, como lidar com entradas inválidas com segurança e uma operação de ida e volta com bin2hex().
Sintaxe
string|false hex2bin ( string $string )A função recebe um parâmetro obrigatório, $string, a string hexadecimal a ser convertida. Cada par de caracteres hexadecimais (como 48) mapeia para um byte (H). Como dois caracteres formam um byte, o comprimento da entrada deve ser par.
Valor de retorno
hex2bin() retorna a string binária decodificada em caso de sucesso, ou false em caso de falha. Ela falha (e emite um aviso) quando a entrada tem comprimento ímpar ou contém caracteres que não são dígitos hexadecimais válidos (0-9, a-f, A-F). Validar a entrada primeiro — como mostrado abaixo — permite evitar esses avisos.
Veja um exemplo de como usar a função hex2bin():
Decodificando uma string hexadecimal
Neste exemplo, temos uma variável string $hex_string contendo uma string hexadecimal. Usamos a função hex2bin() para converter a string hexadecimal em sua representação binária.
A saída deste código será:
Hello WorldComo você pode ver, a função hex2bin() converteu a string hexadecimal em sua representação binária, que é a string "Hello World".
Validando a entrada antes de decodificar
A função hex2bin() retorna false se a string de entrada contiver caracteres hexadecimais inválidos. Para lidar com essa situação de forma segura e evitar avisos, você pode validar a entrada primeiro com ctype_xdigit() (que verifica se todos os caracteres são dígitos hexadecimais):
Neste exemplo, a variável $invalid_hex_string contém uma string hexadecimal com comprimento ímpar (e, portanto, inválida). Usamos ctype_xdigit() para verificar se a string contém apenas caracteres hexadecimais válidos antes de chamar hex2bin(). Se a validação falhar, exibimos uma mensagem de erro; caso contrário, convertemos a string para binário com segurança.
Operação de ida e volta com bin2hex()
hex2bin() e bin2hex() são inversos, portanto codificar uma string e depois decodificá-la retorna o valor original. Isso é útil quando você precisa armazenar ou transmitir dados binários como ASCII simples (por exemplo, em uma URL ou em uma coluna de texto) e recuperá-los posteriormente:
<?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)
?>A saída deste código será:
48656c6c6f20576f726c64
Hello World
bool(true)Como o valor decodificado é idêntico ao original, var_dump() retorna bool(true).
Quando usar
Use hex2bin() sempre que receber dados que foram codificados em hexadecimal e precisar dos bytes brutos de volta — casos comuns incluem a leitura de hashes ou chaves armazenados como strings hexadecimais, a decodificação de valores produzidos por bin2hex() e a reconstrução de payloads binários (imagens, blobs criptografados) que foram transportados como texto.
Funções relacionadas
bin2hex()— converte uma string binária em sua representação hexadecimal (o inverso dehex2bin()).dechex()— converte um inteiro decimal em uma string hexadecimal.hexdec()— converte uma string hexadecimal em um inteiro decimal.