W3docs

octdec()

Apprenez la fonction PHP octdec() : convertir des nombres octaux en décimal, syntaxe, valeurs de retour, permissions de fichiers et pièges à éviter.

La fonction octdec() convertit un nombre octal (base 8), fourni sous forme de chaîne, en son équivalent décimal (base 10). Cette page couvre sa syntaxe, sa valeur de retour, l'utilisation réelle la plus courante (les permissions de fichiers Unix) et les pièges à éviter.

Qu'est-ce que la fonction octdec() ?

octdec() est une fonction PHP intégrée qui prend un nombre octal écrit sous forme de chaîne et retourne l'entier décimal correspondant.

Un bref rappel sur les systèmes de numération :

  • Octal (base 8) utilise uniquement les chiffres 07. Chaque position est une puissance de 8.
  • Décimal (base 10) est le système quotidien, utilisant les chiffres 09.

Par exemple, la chaîne octale "17" signifie 1 × 8 + 7 × 1 = 15 en décimal. octdec() effectue ce calcul pour vous afin que vous n'ayez jamais à calculer les puissances de 8 à la main.

C'est l'inverse de decoct(), qui convertit un nombre décimal en chaîne octale.

Syntaxe

octdec(string $octal_string): int|float
  • $octal_string — la valeur octale à convertir, sous forme de chaîne (par exemple "755").
  • Valeur de retour — l'équivalent décimal. Le résultat est un int, mais PHP retourne un float automatiquement lorsque le nombre est trop grand pour tenir dans un entier de la plateforme.

Comment utiliser la fonction octdec()

Passez la valeur octale sous forme de chaîne et octdec() retourne le nombre décimal :

php— editable, runs on the server

Ici, la chaîne octale "10" équivaut à 1 × 8 + 0 = 8 en décimal, donc le script affiche 8. Notez que l'octal "10" n'est pas dix — c'est huit, car il n'y a pas de chiffre 8 ou 9 en base 8.

Conversion de plusieurs valeurs

Observer quelques conversions côte à côte rend le schéma de la base 8 plus clair :

<?php
echo octdec("7"),   "\n"; // 7   (7 × 1)
echo octdec("10"),  "\n"; // 8   (1 × 8 + 0)
echo octdec("17"),  "\n"; // 15  (1 × 8 + 7)
echo octdec("100"), "\n"; // 64  (1 × 64)
echo octdec("777"), "\n"; // 511 (7 × 64 + 7 × 8 + 7)
?>

Utilisation concrète : les permissions de fichiers

La raison la plus courante d'utiliser octdec() est la gestion des permissions de fichiers Unix. Des fonctions comme chmod() attendent un entier, mais les permissions sont presque toujours écrites et discutées en octal (755, 644, etc.). Passer directement une chaîne de permission échoue silencieusement, il faut donc la convertir au préalable :

<?php
$octalPermission = "755";

// Convert the octal permission string to the integer chmod() needs
$mode = octdec($octalPermission);

echo "Octal 755 = decimal {$mode}\n"; // Octal 755 = decimal 493

// chmod("script.sh", $mode); // applies rwxr-xr-x
?>

Ceci affiche Octal 755 = decimal 493. Un bug courant consiste à appeler chmod("file", 755) avec un littéral décimal brut — cela définit des bits de permission incorrects. Écrivez soit le littéral octal 0755, soit construisez la valeur avec octdec("755").

Points à surveiller

Avertissement

octdec() ignore silencieusement tout caractère qui n'est pas un chiffre octal valide (07). Ainsi, octdec("90") ne génère pas d'erreur — il supprime le 9 invalide et il reste 0, retournant 0. Validez votre entrée avant de la convertir si elle peut contenir des caractères invalides.

Quelques points supplémentaires à garder à l'esprit :

  • L'entrée doit contenir uniquement des chiffres octaux. Les chiffres 8 et 9 ne sont pas valides en base 8 et sont ignorés.
  • Passez une chaîne, pas un littéral. Écrire octdec(017) interprète d'abord 017 comme un littéral octal (décimal 15) avant de le convertir à nouveau — rarement ce que vous souhaitez. Utilisez octdec("17").
  • Les grandes valeurs retournent un float. Les très grandes chaînes octales dépassent PHP_INT_MAX, donc octdec() retourne un nombre à virgule flottante plutôt qu'un entier.

Fonctions associées

  • decoct() — l'inverse : décimal vers octal.
  • hexdec() / dechex() — conversion entre hexadécimal et décimal.
  • bindec() / decbin() — conversion entre binaire et décimal.
  • intval() — analyser une chaîne en entier dans une base arbitraire (intval($str, 8) est une autre façon de lire l'octal).

Conclusion

La fonction octdec() transforme une chaîne octale en entier décimal, ce qui est indispensable lorsque vous travaillez avec des permissions de fichiers ou toute donnée en base 8 en PHP. N'oubliez pas de passer la valeur sous forme de chaîne, de valider les entrées pouvant contenir des caractères non octaux, et d'utiliser decoct() lorsque vous avez besoin de convertir dans le sens inverse.

Pratique

Pratique
Quel est le rôle de la fonction PHP octdec() ?
Quel est le rôle de la fonction PHP octdec() ?
Was this page helpful?