W3docs

decoct()

La funzione decoct() in PHP converte un numero decimale in un numero ottale. Scopri sintassi, esempi e casi d'uso pratici.

La funzione decoct() converte un intero decimale (base 10) nella sua rappresentazione string ottale (base 8). È lo strumento integrato di PHP per la conversione da decimale a ottale, l'inverso di octdec().

L'ottale compare ancora nel codice reale — in modo particolare nei permessi dei file Unix, dove 0755 e 0644 sono valori ottali. decoct() permette di trasformare un intero di permesso calcolato nella familiare stringa a tre cifre.

Sintassi

decoct(int $num): string
  • $num — l'intero decimale da convertire. Se viene passato un float, viene prima troncato a un intero.
  • Valore restituito — una string contenente la rappresentazione ottale. Il risultato è una string, non un numero, perché i valori ottali vengono tipicamente visualizzati piuttosto che usati in ulteriori operazioni aritmetiche.

Il numero massimo convertibile dipende dalla dimensione dell'intero sulla piattaforma (PHP_INT_MAX). I numeri negativi vengono interpretati utilizzando il loro schema di bit in complemento a due per la dimensione della parola della piattaforma.

Esempio di base

php— editable, runs on the server

Il decimale 15 corrisponde a 17 in ottale (1 * 8 + 7 = 15). Si noti che echo stampa 17 senza zero iniziale — decoct() non aggiunge mai il prefisso 0 che i letterali ottali usano nel codice sorgente.

Valori comuni

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

Poiché 493 in ottale è 755, decoct() è utile quando si legge una modalità di file numerica e si vuole visualizzarla nel formato atteso da chmod.

Lettura dei bit dei permessi di un file

fileperms() restituisce la modalità includendo i bit del tipo di file, quindi applica la maschera & 0777 per mantenere solo la parte dei permessi prima della conversione:

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

Attenzione

  • L'output è una string senza zero iniziale. Se si ha bisogno della forma convenzionale a quattro caratteri, si deve anteporre manualmente: '0' . decoct(493) produce "0755".
  • I float vengono troncati, non arrotondati. decoct(15.9) restituisce "17" (identico a decoct(15)), perché il float viene prima convertito in int.
  • Gestisce solo gli interi. Per convertire tra basi arbitrarie, usare invece base_convert().

Funzioni correlate

  • octdec() — l'inverso: da string ottale a decimale.
  • dechex() e decbin() — convertono il decimale in esadecimale e binario.
  • base_convert() — converte un numero tra qualsiasi coppia di basi da 2 a 36.

Esercizio

Pratica
Cosa fa la funzione decoct in PHP?
Cosa fa la funzione decoct in PHP?
Was this page helpful?