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
0–7. Jede Stelle ist eine Potenz von 8. - Dezimal (Basis-10) ist das alltägliche System mit den Ziffern
0–9.
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 einenfloatzurü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:
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
octdec() ignoriert stillschweigend jedes Zeichen, das keine gültige Oktalziffer (0–7) 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
8und9sind in Basis-8 ungültig und werden verworfen. - Übergeben Sie eine Zeichenkette, kein Literal. Das Schreiben von
octdec(017)interpretiert017zunächst als Oktalliteral (Dezimal 15), bevor es erneut umgewandelt wird — das ist selten das Gewünschte. Verwenden Sieoctdec("17"). - Große Werte geben einen float zurück. Sehr große Oktalzeichenketten überschreiten
PHP_INT_MAX, daher gibtoctdec()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.