W3docs

dechex()

Découvrez la fonction dechex() en PHP, qui convertit un entier décimal en chaîne hexadécimale, avec exemples et cas d'usage concrets.

La fonction PHP dechex() convertit un entier décimal (base 10) en sa représentation string hexadécimale (base 16). La notation hexadécimale est utilisée dans les couleurs CSS (#ff0000), les adresses mémoire, les dumps d'octets, ainsi que de nombreux formats de fichiers et de réseaux. dechex() est donc l'aide-mémoire idéale pour afficher un nombre en base 16.

Ce chapitre couvre la syntaxe de la fonction, son comportement avec les nombres négatifs et les flottants, et les usages courants en code réel.

Syntaxe

dechex(int $num): string
  • $num — l'entier décimal à convertir. Il est interprété comme un entier 64 bits, donc la valeur exactement représentable la plus grande est PHP_INT_MAX (9223372036854775807).
  • Valeur de retour — une string hexadécimale en minuscules (chiffres 0-9 et lettres a-f). Le résultat n'a pas de préfixe 0x ni de zéros en tête.

Exemple de base

php— editable, runs on the server

255 est la valeur maximale tenant dans un octet, elle se convertit donc en ff — les deux chiffres hexadécimaux les plus élevés. Quelques conversions supplémentaires rendent le schéma plus clair :

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

Notez que dechex(16) retourne "10" — c'est « un-zéro » en base 16 (16 en décimal), et non le nombre décimal dix.

Nombres négatifs et flottants

dechex() ne fonctionne qu'avec des entiers, mais elle ne rejette pas les autres types d'entrée — elle les contraint d'abord, ce qui peut être surprenant :

  • Les flottants sont tronqués vers zéro avant la conversion. dechex(20.5) est traité comme 20 et retourne 14.
  • Les nombres négatifs sont interprétés comme leur représentation en complément à deux non signé. Sur un build 64 bits, dechex(-1) retourne ffffffffffffffff (16 chiffres f), et non une valeur avec un signe moins.
<?php
echo dechex(20.5);  // 14  (the 20.5 is truncated to 20)
echo "\n";
echo dechex(-1);    // ffffffffffffffff on 64-bit PHP
?>

Si vous avez besoin d'une string hexadécimale avec signe, gérez le signe vous-même : ($n < 0 ? '-' : '') . dechex(abs($n)).

Rembourrage et formatage du résultat

Comme dechex() supprime les zéros en tête, un octet à un seul chiffre comme 5 est renvoyé sous la forme "5" plutôt que "05". Lorsque vous avez besoin d'une largeur fixe — par exemple pour construire une couleur CSS à partir de composantes RGB — rembourrez le résultat :

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

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

Vous pouvez aussi formater l'hexadécimal directement avec sprintf() en utilisant la conversion %x (minuscules) ou %X (majuscules), ce qui est souvent plus propre quand vous souhaitez aussi du rembourrage :

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

L'inverse : hexdec()

Pour faire l'opération inverse — passer d'une string hexadécimale à un entier décimal — utilisez hexdec(). Les deux fonctions sont inverses l'une de l'autre :

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

Quand utiliser dechex()

  • Générer ou inspecter des codes couleur CSS / hex à partir de valeurs RGB numériques.
  • Produire des dumps hexadécimaux de données binaires aux côtés de bin2hex().
  • Afficher des valeurs de masque de bits ou d'indicateurs sous une forme compacte et lisible.
  • Journaliser des valeurs mémoire ou de décalage dans la base attendue par les développeurs.

Pour d'autres bases, PHP fournit des fonctions correspondantes : decbin() pour le binaire et decoct() pour l'octal, avec bindec() et octdec() pour la conversion inverse.

Conclusion

dechex() transforme un entier décimal en string hexadécimale en minuscules, sans préfixe 0x ni zéros en tête. Gardez ses particularités à l'esprit — les flottants sont tronqués, les négatifs deviennent non signés — et utilisez sprintf('%02x', ...) lorsque vous avez besoin de rembourrage. Associez-la à hexdec() chaque fois que vous devez faire un aller-retour entre les deux bases.

Pratique

Pratique
Que fait la fonction dechex() en PHP ?
Que fait la fonction dechex() en PHP ?
Was this page helpful?