W3docs

octdec()

Guida alla funzione PHP octdec(): converti numeri ottali in decimali, con sintassi, valori restituiti, permessi file ed esempi live.

La funzione octdec() converte un numero ottale (base 8), fornito come stringa, nel corrispondente valore decimale (base 10). Questa pagina illustra la sintassi, il valore restituito, l'uso più comune nel mondo reale (permessi file Unix) e le insidie da evitare.

Cos'è la funzione octdec()?

octdec() è una funzione built-in di PHP che accetta un numero ottale scritto come stringa e restituisce il corrispondente intero decimale.

Un rapido ripasso sui sistemi numerici:

  • Ottale (base 8) usa solo le cifre 07. Ogni posizione è una potenza di 8.
  • Decimale (base 10) è il sistema comune, che usa le cifre 09.

Ad esempio, la stringa ottale "17" significa 1 × 8 + 7 × 1 = 15 in decimale. octdec() esegue questo calcolo al posto tuo, così non dovrai mai calcolare le potenze di 8 manualmente.

È l'inverso di decoct(), che converte un numero decimale in una stringa ottale.

Sintassi

octdec(string $octal_string): int|float
  • $octal_string — il valore ottale da convertire, come stringa (ad esempio "755").
  • Valore restituito — l'equivalente decimale. Il risultato è un int, ma PHP restituisce un float automaticamente quando il numero è troppo grande per rientrare in un intero della piattaforma.

Come usare la funzione octdec()

Passa il valore ottale come stringa e octdec() restituisce il numero decimale:

php— editable, runs on the server

In questo caso la stringa ottale "10" equivale a 1 × 8 + 0 = 8 in decimale, quindi lo script stampa 8. Nota che l'ottale "10" non è dieci — è otto, perché non esiste la cifra 8 o 9 in base 8.

Conversione di più valori

Osservare alcune conversioni affiancate rende più chiaro il pattern in base 8:

<?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)
?>

Uso pratico: permessi file

Il motivo più comune per usare octdec() sono i permessi file Unix. Funzioni come chmod() si aspettano un intero, ma i permessi vengono quasi sempre scritti e discussi in ottale (755, 644, ecc.). Passare una stringa di permessi direttamente causa errori silenziosi, quindi è necessario convertirla prima:

<?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
?>

Questo stampa Octal 755 = decimal 493. Un errore comune è chiamare chmod("file", 755) con un letterale decimale — vengono impostati i bit di permesso errati. Si può usare il letterale ottale 0755 oppure costruire il valore con octdec("755").

Cose a cui prestare attenzione

Attenzione

octdec() ignora silenziosamente qualsiasi carattere che non sia una cifra ottale valida (07). Quindi octdec("90") non genera un errore — elimina il 9 non valido e rimane solo 0, restituendo 0. Valida l'input prima di convertirlo se potrebbe contenere caratteri non validi.

Alcuni ulteriori punti da tenere a mente:

  • L'input deve contenere solo cifre ottali. Le cifre 8 e 9 non sono valide in base 8 e vengono scartate.
  • Passa una stringa, non un letterale. Scrivere octdec(017) interpreta prima 017 come letterale ottale (decimale 15) prima di convertirlo di nuovo — raramente è ciò che si desidera. Usa octdec("17").
  • I valori grandi restituiscono un float. Stringhe ottali molto lunghe superano PHP_INT_MAX, quindi octdec() restituisce un numero in virgola mobile anziché un intero.

Funzioni correlate

  • decoct() — l'inverso: da decimale a ottale.
  • hexdec() / dechex() — conversione tra esadecimale e decimale.
  • bindec() / decbin() — conversione tra binario e decimale.
  • intval() — analizza una stringa in un intero in una base arbitraria (intval($str, 8) è un altro modo per leggere l'ottale).

Conclusione

La funzione octdec() trasforma una stringa ottale in un intero decimale, indispensabile quando si lavora con i permessi file o con qualsiasi dato in base 8 in PHP. Ricorda di passare il valore come stringa, di validare l'input che potrebbe contenere caratteri non ottali, e di usare decoct() quando hai bisogno di convertire nella direzione opposta.

Esercitazione

Pratica
Qual è lo scopo della funzione PHP octdec()?
Qual è lo scopo della funzione PHP octdec()?
Was this page helpful?