W3docs

dechex()

Aprenda a usar a função dechex() do PHP para converter números decimais em representações hexadecimais.

A função dechex() do PHP converte um inteiro decimal (base 10) em sua representação string hexadecimal (base 16). O hexadecimal é a notação usada em cores CSS (#ff0000), endereços de memória, dumps de bytes e muitos formatos de arquivo e rede, por isso dechex() é o auxiliar ideal sempre que você precisar exibir um número na base 16.

Este capítulo aborda a sintaxe da função, como ela lida com números negativos e floats, e as formas mais comuns de usá-la em código real.

Sintaxe

dechex(int $num): string
  • $num — o inteiro decimal a ser convertido. É interpretado como um inteiro de 64 bits, portanto o maior valor exatamente representável é PHP_INT_MAX (9223372036854775807).
  • Valor de retorno — uma string hexadecimal em minúsculas (dígitos 0-9 e letras a-f). O resultado não tem prefixo 0x nem zeros à esquerda.

Exemplo Básico

php— editable, runs on the server

255 é o maior valor que cabe em um único byte, então é convertido para ff — os dois maiores dígitos hexadecimais. Mais algumas conversões tornam o padrão claro:

<?php
echo dechex(0);   // 0
echo "\n";
echo dechex(10);  // a
echo "\n";
echo dechex(16);  // 10
echo "\n";
echo dechex(255); // ff
?>

Note que dechex(16) retorna "10" — isso é "um-zero" na base 16 (16 em decimal), não o número decimal dez.

Números Negativos e Floats

dechex() só funciona com inteiros, mas não rejeita outros tipos de entrada — ela os converte primeiro, o que pode surpreender:

  • Floats são truncados em direção a zero antes da conversão. dechex(20.5) é tratado como 20 e retorna 14.
  • Números negativos são interpretados como sua representação em complemento de dois sem sinal. Em uma build de 64 bits, dechex(-1) retorna ffffffffffffffff (16 dígitos f), não um valor com sinal de menos.
<?php
echo dechex(20.5);  // 14  (the 20.5 is truncated to 20)
echo "\n";
echo dechex(-1);    // ffffffffffffffff on 64-bit PHP
?>

Se você precisar de uma string hex com aparência de sinal, trate o sinal manualmente: ($n < 0 ? '-' : '') . dechex(abs($n)).

Preenchimento e Formatação da Saída

Como dechex() remove os zeros à esquerda, um byte de um único dígito como 5 retorna "5" em vez de "05". Quando você precisa de uma largura fixa — por exemplo, ao construir uma cor CSS a partir de componentes RGB — preencha o resultado:

<?php
$r = 5; $g = 200; $b = 16;

$color = sprintf('#%02s%02s%02s', dechex($r), dechex($g), dechex($b));
echo $color; // #05c810
?>

Você também pode formatar o hex diretamente com sprintf() usando a conversão %x (minúsculas) ou %X (maiúsculas), o que costuma ser mais limpo quando você também quer preenchimento:

<?php
echo sprintf('%02X', 255); // FF
?>

O Inverso: hexdec()

Para fazer o caminho inverso — de uma string hexadecimal de volta para um inteiro decimal — use hexdec(). As duas funções são inversas:

<?php
echo hexdec(dechex(255)); // 255
?>

Quando Usar dechex()

  • Gerar ou inspecionar códigos de cor CSS / hex a partir de valores RGB numéricos.
  • Produzir hex dumps de dados binários junto com bin2hex().
  • Exibir valores de bitmask ou flags em uma forma compacta e legível.
  • Registrar valores de memória ou offset na base que os desenvolvedores esperam.

Para outras bases, o PHP fornece auxiliares equivalentes: decbin() para binário e decoct() para octal, com bindec() e octdec() convertendo de volta.

Conclusão

dechex() transforma um inteiro decimal em uma string hexadecimal em minúsculas, sem prefixo 0x e sem zeros à esquerda. Tenha em mente suas peculiaridades — floats são truncados, negativos tornam-se sem sinal — e use sprintf('%02x', ...) quando precisar de preenchimento. Use-a em conjunto com hexdec() sempre que precisar fazer a conversão de ida e volta entre as duas bases.

Prática

Prática
O que a função dechex() em PHP faz?
O que a função dechex() em PHP faz?
Was this page helpful?