Signatur
Beschreibung
decoct() konvertiert eine ganze Dezimalzahl in die entsprechende Oktaldarstellung (Zahlensystem zur Basis 8). Das Ergebnis wird als string zurückgegeben, da oktale Zahlen häufig als Zeichenketten weiterverarbeitet werden – beispielsweise bei der Ausgabe von Dateisystemberechtigungen.
Die Funktion ist das Gegenstück zu octdec(), das die umgekehrte Richtung (Oktal → Dezimal) übernimmt. Sie ist äquivalent zu base_convert($num, 10, 8). Für die Umwandlung in andere Zahlensysteme stehen dechex() (Hexadezimal) und decbin() (Binär) bereit.
Typische Einsatzgebiete sind die leserliche Darstellung von UNIX-Dateiberechtigungen (z. B. 0755) oder überall dort, wo Systeme oder Protokolle Oktalwerte erwarten.
- Bei negativen Zahlen auf 64-Bit-Systemen gibt PHP eine entsprechend lange oktale Zeichenkette zurück (vorzeichenlos interpretiert).
- Das Ergebnis enthält kein führendes
0– dies muss bei Bedarf manuell ergänzt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $num Pflicht | int | Die dezimale Ganzzahl, die in eine Oktaldarstellung umgewandelt werden soll. |
Rückgabewert
num als Zeichenkette. Für den Wert 0 wird "0" zurückgegeben.Beispiele
Einfache Dezimal-zu-Oktal-Konvertierung
<?php
$dezimal = 255;
$oktal = decoct($dezimal);
echo $oktal; // 377
// Mit führender Null ausgeben (für typische UNIX-Darstellung)
echo '0' . decoct(493); // 0755
UNIX-Dateiberechtigung lesbar anzeigen
<?php
// chmod() erwartet Oktalwerte – decoct() hilft bei der Anzeige
$mode = fileperms('example.txt');
if ($mode !== false) {
// Nur die unteren 12 Bits sind für die Berechtigungen relevant
$berechtigung = '0' . decoct($mode & 0xFFF);
echo 'Berechtigung: ' . $berechtigung;
} else {
// Beispielwert zum Demonstrieren
echo '0' . decoct(0755); // 0755
}
Rücktransformation mit octdec()
<?php
$original = 64;
$oktal = decoct($original); // "100"
$zurueck = octdec($oktal); // 64
echo "Dezimal: $original → Oktal: $oktal → zurück: $zurueck";
// Wichtig · Fallstricke
Negative Zahlen: Auf 64-Bit-Systemen wird eine negative Ganzzahl als vorzeichenloser 64-Bit-Wert interpretiert, was zu einer sehr langen okalen Zeichenkette führt. Soll ein Vorzeichen erhalten bleiben, muss dies manuell behandelt werden.
Führende Null: decoct() gibt keine führende 0 zurück. Wer oktale Literale im PHP-Quellcode (z. B. für chmod()) erzeugen möchte, muss die Null manuell voranstellen oder direkt Integer-Oktalliterale (0755) verwenden.
Große Zahlen: Bei Zahlen jenseits von PHP_INT_MAX kann es zu Überläufen kommen; in solchen Fällen empfiehlt sich base_convert() mit der BCMath- oder GMP-Erweiterung.