W3docs

bin2hex()

A função bin2hex() converte dados binários em uma string hexadecimal. Veja sintaxe, exemplos e funções relacionadas.

A função PHP bin2hex() converte uma string de bytes brutos em sua representação hexadecimal. Cada byte (8 bits) se torna exatamente dois dígitos hexadecimais, portanto a string retornada é sempre o dobro do comprimento da entrada. Apesar do nome, a entrada é qualquer string segura para binários — não uma string de caracteres "0"/"1" — o que torna bin2hex() a forma padrão de converter dados binários arbitrários (bytes de imagem, chaves de criptografia, hashes) em um formato ASCII seguro e imprimível.

Esta página aborda a sintaxe, um exemplo funcional, como ela difere de funções relacionadas e os pontos de atenção a observar.

Sintaxe

bin2hex(string $string): string

Recebe um único parâmetro, $string — os dados binários a codificar — e retorna uma string de caracteres hexadecimais em minúsculas (0-9, a-f). A função está disponível desde o PHP 4.0.5 e nunca retorna false.

Exemplo básico

php— editable, runs on the server

Aqui o texto "Hello, World!" é passado para bin2hex(), que codifica o valor de byte de cada caractere como dois dígitos hexadecimais. A saída é:

48656c6c6f2c20576f726c6421

Por exemplo, o primeiro caractere H tem o valor de byte 0x48, e é 0x65, e assim por diante — a concatenação desses pares produz o resultado acima.

Por que usar bin2hex()

O motivo mais comum é tornar os dados binários seguros para imprimir, registrar em log, armazenar em uma coluna de texto ou enviar em uma URL. Bytes brutos podem conter caracteres não imprimíveis ou de controle; sua forma hexadecimal é ASCII puro.

<?php
// Generate 8 random bytes and show them as a hex token.
$bytes = random_bytes(8);
echo bin2hex($bytes); // e.g. "9f3a1c84e2b07d56" (16 hex chars)
?>

Um token de 16 caracteres é produzido porque 8 bytes correspondem a 16 dígitos hexadecimais.

Revertendo a conversão

Use hex2bin() para converter uma string hexadecimal de volta aos bytes originais. As duas funções são inversas exatas para qualquer entrada válida:

<?php
$original = "PHP";
$hex      = bin2hex($original);     // "504850"
$restored = hex2bin($hex);          // "PHP"

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

bin2hex() vs. dechex()

É fácil confundi-las:

  • bin2hex() opera em uma string de bytes e codifica cada byte como dois dígitos hexadecimais.
  • dechex() opera em um único inteiro e retorna sua forma hexadecimal sem preenchimento com zeros.
<?php
echo bin2hex("A");  // "41"  (the byte 0x41)
echo "\n";
echo dechex(65);    // "41"  (the integer 65)
echo "\n";
echo dechex(10);    // "a"   (no leading zero)
?>

Pontos de atenção

  • Apenas minúsculas. bin2hex() sempre emite letras minúsculas. Se precisar de maiúsculas, aplique strtoupper() ao resultado.
  • O comprimento é dobrado. O comprimento da saída é sempre 2 * strlen($input); uma string vazia retorna uma string vazia.
  • Não é criptografia. A codificação hexadecimal é totalmente reversível e não oferece segurança — apenas muda a representação. Para hashing, use md5() ou sha1(), que já retornam strings hexadecimais.

Funções relacionadas

  • hex2bin() — a operação inversa.
  • dechex() — converte um único inteiro para hexadecimal.
  • ord() — obtém o valor de byte de um único caractere.
  • strlen() — mede o comprimento em bytes de uma string.

Prática

Prática
Qual é a função de bin2hex() no PHP?
Qual é a função de bin2hex() no PHP?
Was this page helpful?