Start · Sprachen · PHP · Referenz · octdec

octdec

Funktion

Wandelt eine oktale Zeichenkette in die entsprechende Dezimalzahl um und gibt diese als <code>int</code> oder <code>float</code> zurück.

seit PHP 4.0.0 Kategorie: math

Signatur

octdec(string $octal_string): int|float

Beschreibung

octdec() konvertiert eine Zeichenkette, die eine Oktalzahl (Basis 8) darstellt, in die zugehörige Dezimalzahl (Basis 10). Die Funktion verarbeitet dabei Ziffern von 0 bis 7; alle anderen Zeichen werden ignoriert, sobald sie auftreten.

Die Funktion ist nützlich, wenn Oktalwerte aus Textdateien, Konfigurationen oder Protokollen gelesen werden und als Dezimalzahlen weiterverarbeitet werden sollen. Ein typisches Einsatzgebiet sind Unix-Dateiberechtigungen, die üblicherweise in Oktalnotation angegeben werden (z. B. 0755).

Für sehr große Oktalzahlen, die den Wertebereich von int überschreiten, gibt octdec() automatisch einen float zurück, um Präzisionsverluste zu minimieren. Die komplementäre Funktion decoct() wandelt Dezimalzahlen zurück in Oktaldarstellung.

Parameter

Name Typ Default Beschreibung
$octal_string Pflicht string Die zu konvertierende Oktalzahl als Zeichenkette. Gültige Ziffern sind 0 bis 7. Ungültige Zeichen werden bei der Konvertierung ignoriert; das Ergebnis basiert nur auf den Ziffern vor dem ersten ungültigen Zeichen.

Rückgabewert

Typ
int|float
Beschreibung
Gibt die dezimale Entsprechung der übergebenen Oktalzahl zurück. Kleine Werte werden als int geliefert; liegt das Ergebnis außerhalb des Ganzzahl-Bereichs der Plattform, wird ein float zurückgegeben.

Beispiele

Einfache Oktal-zu-Dezimal-Konvertierung

<?php
// Oktale Zahl 17 entspricht dezimal 15
$dezimal = octdec('17');
echo $dezimal; // 15

// Oktale Zahl 755 entspricht dezimal 493
echo octdec('755'); // 493
15 493

Unix-Dateiberechtigung aus Oktal auslesen

<?php
// Typische Unix-Berechtigung: 0755 (rwxr-xr-x)
$oktal = '0755';
$dezimal = octdec($oktal);
echo "Oktal: {$oktal} => Dezimal: {$dezimal}\n";

// Verwendung mit chmod() — dieser erwartet tatsächlich einen Integer
// octdec() liefert den passenden Wert
$pfad = '/tmp/beispiel.txt';
if (file_exists($pfad)) {
    chmod($pfad, octdec('0644'));
    echo "Berechtigung gesetzt: " . octdec('0644') . " (dezimal)\n";
}
Oktal: 0755 => Dezimal: 493

Verhalten bei sehr großen Oktalwerten

<?php
// Sehr große Oktalzahl — Ergebnis überschreitet PHP_INT_MAX auf 32-Bit-Systemen
$gross = octdec('777777777777777777777');
var_dump($gross); // float auf 32-Bit-Plattformen

// Komplementäre Rückkonvertierung
$original = decoct(493);
echo $original; // 755
float(9.2233720368548E+18) 755

// Wichtig · Fallstricke

Ungültige Zeichen: Enthält octal_string Zeichen außerhalb von 0–7, wird nur der Teil der Zeichenkette bis zum ersten ungültigen Zeichen ausgewertet. Dies kann zu unerwarteten Ergebnissen führen, wenn die Eingabe nicht validiert wird.

Vorangestelltes 0: Die führende Null (wie in PHP-Oktal-Literalen üblich, z. B. 0755) wird von octdec() korrekt behandelt, da 0 eine gültige Oktalziffer ist und keinen Einfluss auf den Wert hat.

Plattformabhängigkeit: Das Ergebnis kann je nach Betriebssystem und PHP-Build (32-Bit vs. 64-Bit) als int oder float zurückgegeben werden. Auf Plattformen mit 64-Bit-Integers ist der Bereich entsprechend größer.