W3docs

octdec()

PHP octdec() Funktion: Oktalzahlen in Dezimal umrechnen, mit Syntax, Rückgabewerten, Dateiberechtigungs-Beispielen und Live-Demos.

Die Funktion octdec() wandelt eine oktale (Basis-8) Zahl, die als Zeichenkette übergeben wird, in das entsprechende dezimale (Basis-10) Äquivalent um. Diese Seite behandelt die Syntax, den Rückgabewert, den häufigsten Praxiseinsatz (Unix-Dateiberechtigungen) und mögliche Fallstricke.

Was ist die octdec() Funktion?

octdec() ist eine eingebaute PHP-Funktion, die eine oktal geschriebene Zahl als Zeichenkette entgegennimmt und die entsprechende Dezimalzahl zurückgibt.

Eine kurze Auffrischung zu Zahlensystemen:

  • Oktal (Basis-8) verwendet nur die Ziffern 07. Jede Stelle ist eine Potenz von 8.
  • Dezimal (Basis-10) ist das alltägliche System mit den Ziffern 09.

Beispielsweise bedeutet die Oktalzeichenkette "17" in Dezimal 1 × 8 + 7 × 1 = 15. octdec() erledigt diese Berechnung automatisch, sodass Sie Potenzen von 8 nie von Hand berechnen müssen.

Sie ist die Umkehrfunktion von decoct(), das eine Dezimalzahl zurück in eine Oktalzeichenkette umwandelt.

Syntax

octdec(string $octal_string): int|float
  • $octal_string — der umzuwandelnde Oktalwert als Zeichenkette (zum Beispiel "755").
  • Rückgabewert — das dezimale Äquivalent. Das Ergebnis ist ein int, PHP gibt jedoch automatisch einen float zurück, wenn die Zahl zu groß für einen plattformspezifischen Integer ist.

Verwendung der octdec() Funktion

Übergeben Sie den Oktalwert als Zeichenkette, und octdec() gibt die Dezimalzahl zurück:

php— editable, runs on the server

Hier entspricht die Oktalzeichenkette "10" dem Wert 1 × 8 + 0 = 8 in Dezimal, daher gibt das Skript 8 aus. Beachten Sie, dass oktal "10" nicht zehn bedeutet — es ist acht, da es in Basis-8 keine Ziffer 8 oder 9 gibt.

Mehrere Werte umrechnen

Das Nebeneinanderstellen einiger Umrechnungen verdeutlicht das Basis-8-Muster:

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

Praxiseinsatz: Dateiberechtigungen

Der häufigste Grund für den Einsatz von octdec() sind Unix-Dateiberechtigungen. Funktionen wie chmod() erwarten eine Ganzzahl, aber Berechtigungen werden fast immer in Oktal angegeben und besprochen (755, 644 usw.). Eine Berechtigungszeichenkette direkt zu übergeben schlägt lautlos fehl, daher sollte sie zuerst umgewandelt werden:

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

Dies gibt Octal 755 = decimal 493 aus. Ein häufiger Fehler ist der Aufruf chmod("file", 755) mit einem einfachen Dezimalliteral — das setzt die falschen Berechtigungs-Bits. Schreiben Sie entweder das Oktalliteral 0755 oder berechnen Sie den Wert mit octdec("755").

Fallstricke

Warnung

octdec() ignoriert stillschweigend jedes Zeichen, das keine gültige Oktalziffer (07) ist. octdec("90") gibt also keinen Fehler aus — die ungültige 9 wird entfernt, es bleibt 0, und die Funktion gibt 0 zurück. Validieren Sie Ihre Eingaben vor der Umwandlung, wenn diese ungültige Zeichen enthalten könnten.

Weitere Punkte, die zu beachten sind:

  • Die Eingabe darf nur Oktalziffern enthalten. Die Ziffern 8 und 9 sind in Basis-8 ungültig und werden verworfen.
  • Übergeben Sie eine Zeichenkette, kein Literal. Das Schreiben von octdec(017) interpretiert 017 zunächst als Oktalliteral (Dezimal 15), bevor es erneut umgewandelt wird — das ist selten das Gewünschte. Verwenden Sie octdec("17").
  • Große Werte geben einen float zurück. Sehr große Oktalzeichenketten überschreiten PHP_INT_MAX, daher gibt octdec() anstelle einer Ganzzahl eine Gleitkommazahl zurück.

Verwandte Funktionen

  • decoct() — die Umkehrfunktion: Dezimal nach Oktal.
  • hexdec() / dechex() — Umwandlung zwischen Hexadezimal und Dezimal.
  • bindec() / decbin() — Umwandlung zwischen Binär und Dezimal.
  • intval() — eine Zeichenkette in eine Ganzzahl mit beliebiger Basis umwandeln (intval($str, 8) ist eine weitere Möglichkeit, Oktal zu lesen).

Fazit

Die Funktion octdec() wandelt eine Oktalzeichenkette in eine dezimale Ganzzahl um, was immer dann unerlässlich ist, wenn Sie in PHP mit Dateiberechtigungen oder anderen Basis-8-Daten arbeiten. Denken Sie daran, den Wert als Zeichenkette zu übergeben, Eingaben zu validieren, die nicht-oktale Zeichen enthalten könnten, und decoct() zu verwenden, wenn Sie in die entgegengesetzte Richtung umwandeln möchten.

Übungen

Übung
Was ist der Zweck der PHP-Funktion octdec()?
Was ist der Zweck der PHP-Funktion octdec()?
Was this page helpful?