W3docs

decoct()

Découvrez la fonction decoct() en PHP, qui convertit un entier décimal en sa représentation octale sous forme de string.

La fonction decoct() convertit un entier décimal (base 10) en sa représentation octale (base 8) sous forme de string. C'est l'outil intégré de PHP pour la conversion décimal vers octal, l'inverse de octdec().

L'octal apparaît encore dans du vrai code — notamment dans les permissions de fichiers Unix, où 0755 et 0644 sont des valeurs octales. decoct() vous permet de convertir un entier de permission calculé en la chaîne à trois chiffres familière.

Syntaxe

decoct(int $num): string
  • $num — l'entier décimal à convertir. Si un flottant est passé, il est tronqué en entier au préalable.
  • Valeur de retour — une string contenant la représentation octale. Le résultat est une string, pas un nombre, car les valeurs octales sont généralement affichées plutôt qu'utilisées dans des calculs supplémentaires.

Le plus grand nombre pouvant être converti dépend de la taille des entiers de la plateforme (PHP_INT_MAX). Les nombres négatifs sont interprétés en utilisant leur représentation en complément à deux pour la taille de mot de la plateforme.

Exemple de base

php— editable, runs on the server

Le décimal 15 correspond à 17 en octal (1 * 8 + 7 = 15). Notez que echo affiche 17 sans zéro en tête — decoct() n'ajoute jamais le préfixe 0 que les littéraux octaux utilisent dans le code source.

Valeurs courantes

<?php
echo decoct(8);   // 10
echo "\n";
echo decoct(64);  // 100
echo "\n";
echo decoct(493); // 755  (the rwxr-xr-x permission set)
?>

Puisque 493 en octal vaut 755, decoct() est pratique lorsque vous lisez un mode de fichier numérique et souhaitez l'afficher tel que chmod le attend.

Lecture des bits de permission d'un fichier

fileperms() retourne le mode incluant les bits de type de fichier, donc masquez avec & 0777 pour ne conserver que la partie permissions avant la conversion :

<?php
$mode = 0755;                 // octal literal -> stored as decimal 493
echo decoct($mode & 0777);    // 755
?>

Points d'attention

  • La sortie est une string sans zéro en tête. Si vous avez besoin de la forme conventionnelle à quatre caractères, ajoutez-le vous-même : '0' . decoct(493) donne "0755".
  • Les flottants sont tronqués, pas arrondis. decoct(15.9) retourne "17" (identique à decoct(15)), car le flottant est d'abord converti en int.
  • Elle ne gère que les entiers. Pour convertir entre des bases arbitraires, utilisez base_convert() à la place.

Fonctions associées

  • octdec() — l'inverse : string octale vers décimal.
  • dechex() et decbin() — convertit le décimal en hexadécimal et en binaire.
  • base_convert() — convertit un nombre entre deux bases quelconques de 2 à 36.

Pratique

Pratique
Que fait la fonction decoct en PHP ?
Que fait la fonction decoct en PHP ?
Was this page helpful?