W3docs

decoct()

Die PHP-Funktion decoct() wandelt eine dezimale Ganzzahl in ihre oktale string-Darstellung um. Syntax, Beispiele und häufige Fallstricke.

Die Funktion decoct() wandelt eine dezimale (Basis-10) Ganzzahl in ihre oktale (Basis-8) string-Darstellung um. Sie ist PHPs eingebautes Werkzeug für die Dezimal-zu-Oktal-Richtung der Basiskonvertierung – die Umkehrung von octdec().

Oktal taucht nach wie vor in echtem Code auf – am bekanntesten bei Unix-Dateiberechtigungen, wo 0755 und 0644 oktale Werte sind. Mit decoct() können Sie eine berechnete Berechtigungs-Ganzzahl wieder in die vertraute dreistellige Zeichenkette umwandeln.

Syntax

decoct(int $num): string
  • $num — die dezimale Ganzzahl, die konvertiert werden soll. Wird ein Float übergeben, wird er zuerst zu einer Ganzzahl abgeschnitten.
  • Rückgabewert — ein string, der die oktale Darstellung enthält. Das Ergebnis ist ein string und keine Zahl, da oktale Werte typischerweise angezeigt und nicht für weitere Berechnungen verwendet werden.

Die größte Zahl, die konvertiert werden kann, hängt von der Integer-Größe der Plattform ab (PHP_INT_MAX). Negative Zahlen werden anhand ihres Zweierkomplement-Bitmusters für die Wortgröße der Plattform interpretiert.

Einfaches Beispiel

php— editable, runs on the server

Dezimal 15 ist 17 in Oktal (1 * 8 + 7 = 15). Beachten Sie, dass echo 17 ohne führende Null ausgibt – decoct() fügt niemals das 0-Präfix hinzu, das Oktal-Literale im Quellcode verwenden.

Häufige Werte

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

Da 493 in Oktal 755 ist, ist decoct() praktisch, wenn Sie einen numerischen Dateimodus auslesen und ihn so anzeigen möchten, wie chmod es erwartet.

Dateiberechtigungsbits auslesen

fileperms() gibt den Modus einschließlich Dateityp-Bits zurück; maskieren Sie daher mit & 0777, um nur den Berechtigungsanteil zu behalten, bevor Sie konvertieren:

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

Fallstricke

  • Die Ausgabe ist ein string ohne führende Null. Wenn Sie die konventionelle vierstellige Form benötigen, stellen Sie sie selbst voran: '0' . decoct(493) ergibt "0755".
  • Floats werden abgeschnitten, nicht gerundet. decoct(15.9) gibt "17" zurück (genauso wie decoct(15)), weil der Float zuerst zu int gecastet wird.
  • Es werden nur Ganzzahlen verarbeitet. Für die Konvertierung zwischen beliebigen Basen verwenden Sie stattdessen base_convert().

Verwandte Funktionen

  • octdec() — die Umkehrfunktion: oktalen string zurück zu dezimal.
  • dechex() und decbin() — wandeln dezimal in hexadezimal und binär um.
  • base_convert() — wandelt eine Zahl zwischen beliebigen zwei Basen von 2 bis 36 um.

Übungen

Übung
Was macht die Funktion decoct in PHP?
Was macht die Funktion decoct in PHP?
Was this page helpful?