W3docs

base_convert()

Découvrez la fonction base_convert() en PHP pour convertir un nombre d'une base numérique à une autre, de la base 2 à 36.

La fonction base_convert() convertit un nombre d'une base numérique à une autre — par exemple, du décimal (base 10) au binaire (base 2), ou de l'hexadécimal (base 16) vers le décimal. C'est l'outil de conversion de base le plus général de PHP, car il fonctionne avec n'importe quelle base de 2 à 36, tandis que des fonctions comme dechex() ou bindec() sont limitées à une seule paire de bases.

Cette page couvre la syntaxe, la plage de bases valides, des exemples exécutables, les pièges à éviter (sensibilité à la casse, fractions, limites de précision), et quand privilégier une fonction plus spécifique.

Syntaxe

base_convert(string $num, int $from_base, int $to_base): string
ParamètreDescription
$numLe nombre à convertir, fourni sous forme de string (un entier est également accepté et converti en string).
$from_baseLa base dans laquelle $num est actuellement écrit. Doit être comprise entre 2 et 36.
$to_baseLa base vers laquelle convertir $num. Doit être comprise entre 2 et 36.

Valeur de retour : le nombre converti sous forme de string, toujours en minuscules. Les bases supérieures à 10 utilisent les lettres az pour les chiffres 10 à 35 (ainsi la base 16 utilise 0-9 et a-f, la base 36 utilise 0-9 et a-z).

Un exemple de base

L'utilisation la plus courante est la conversion d'un nombre décimal en binaire :

php— editable, runs on the server

Le décimal 10 devient la string "1010" en binaire. Notez que le résultat est une string et non un entier — gardez cela à l'esprit si vous prévoyez d'effectuer des calculs arithmétiques ensuite.

Conversion entre bases courantes

La même fonction gère l'hexadécimal, l'octal et toute base intermédiaire. Voici plusieurs conversions côte à côte :

<?php
echo base_convert("ff", 16, 10), "\n";   // hex -> decimal: 255
echo base_convert("255", 10, 16), "\n";  // decimal -> hex: ff
echo base_convert("777", 8, 10), "\n";   // octal -> decimal: 511
echo base_convert("a37334", 16, 2), "\n";// hex -> binary
echo base_convert("zz", 36, 10), "\n";   // base 36 -> decimal: 1295
?>

Ce code affiche :

255
ff
511
101000110111001100110100
1295

Puisque base_convert() comprend les deux extrémités de la conversion, il n'est pas nécessaire d'enchaîner deux appels séparés pour passer, par exemple, de l'hexadécimal au binaire.

Points de vigilance

  • La casse est normalisée. Les lettres en entrée peuvent être en majuscules ou en minuscules ("FF" et "ff" fonctionnent toutes les deux), mais la sortie est toujours en minuscules.
  • Les fractions ne sont pas prises en charge. base_convert() fonctionne uniquement sur des nombres entiers. Une valeur comme "12.34" aura son . traité comme un caractère invalide — il est supprimé et seuls les chiffres sont convertis (et PHP 8.1+ émet un avis de dépréciation pour les caractères ignorés).
  • Les chiffres invalides sont ignorés. Un caractère qui n'est pas valide dans $from_base (par exemple un 9 quand $from_base vaut 8) est silencieusement supprimé plutôt que de déclencher une erreur, pensez donc à valider votre entrée au préalable.
  • La précision est limitée. En interne, la valeur est traitée comme un nombre à virgule flottante. Les très grands entiers peuvent perdre en précision et produire un résultat inexact. Pour une conversion de base en précision arbitraire, utilisez l'extension GMP avec gmp_init() et une base.

Quand utiliser une fonction plus spécifique

Si vous convertissez toujours vers ou depuis la base 10, les fonctions dédiées sont plus claires et légèrement plus rapides :

Préférez base_convert() lorsqu'aucune des deux bases n'est 10 (par ex. hex → binaire) ou lorsque la base est inhabituelle, comme la base 36 (souvent utilisée pour des identifiants courts et adaptés aux URL).

Conclusion

base_convert() est l'outil PHP polyvalent pour déplacer un entier entre deux systèmes numériques quelconques, de la base 2 à la base 36. N'oubliez pas qu'il retourne une string en minuscules, ignore les fractions et les chiffres invalides, et est limité par la précision des nombres à virgule flottante pour les très grandes valeurs. Pour les conversions courantes de décimal vers X, les helpers dédiés dec*() / *dec() sont généralement le meilleur choix.

Pratique

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