W3docs

base_convert()

Erfahren Sie, wie base_convert() in PHP eine Zahl von einer Basis in eine andere umwandelt – mit Beispielen für Hex, Binär und mehr.

Die Funktion base_convert() wandelt eine Zahl von einem Zahlensystem in ein anderes um — zum Beispiel von Dezimal (Basis 10) nach Binär (Basis 2) oder von Hexadezimal (Basis 16) zurück nach Dezimal. Sie ist das universellste Werkzeug unter den PHP-Basiskonvertierungsfunktionen, da sie mit jeder Basis von 2 bis 36 arbeitet, während Funktionen wie dechex() oder bindec() auf ein einzelnes Basispaar beschränkt sind.

Diese Seite behandelt die Syntax, den gültigen Bereich der Basen, eine Reihe von ausführbaren Beispielen, die Fallstricke (Groß-/Kleinschreibung, Brüche, Präzisionsgrenzen) und wann stattdessen eine speziellere Funktion sinnvoller ist.

Syntax

base_convert(string $num, int $from_base, int $to_base): string
ParameterBeschreibung
$numDie zu konvertierende Zahl als string (ein Integer wird ebenfalls akzeptiert und in einen string umgewandelt).
$from_baseDie Basis, in der $num aktuell geschrieben ist. Muss zwischen 2 und 36 liegen.
$to_baseDie Basis, in die $num umgewandelt werden soll. Muss zwischen 2 und 36 liegen.

Rückgabewert: die konvertierte Zahl als string, immer in Kleinbuchstaben. Basen über 10 verwenden die Buchstaben az für die Ziffern 10–35 (Basis 16 verwendet also 0-9 und a-f, Basis 36 verwendet 0-9 und a-z).

Ein einfaches Beispiel

Der häufigste Anwendungsfall ist die Umwandlung einer Dezimalzahl in Binär:

php— editable, runs on the server

Dezimal 10 wird zum string "1010" im Binärsystem. Beachten Sie, dass das Ergebnis ein string und kein Integer ist — das sollte man im Hinterkopf behalten, wenn man anschließend arithmetische Operationen damit durchführen möchte.

Konvertierung zwischen gängigen Basen

Dieselbe Funktion verarbeitet Hexadezimal, Oktal und jede Basis dazwischen. Hier sind mehrere Konvertierungen nebeneinander:

<?php
echo base_convert("ff", 16, 10), "\n";   // hex -> decimal: 255
echo base_convert("255", 10, 16), "\n";  // decimal -> hex: ff
echo base_convert("777", 8, 10), "\n";   // octal -> decimal: 511
echo base_convert("a37334", 16, 2), "\n";// hex -> binary
echo base_convert("zz", 36, 10), "\n";   // base 36 -> decimal: 1295
?>

Die Ausgabe lautet:

255
ff
511
101000110111001100110100
1295

Da base_convert() beide Seiten der Konvertierung versteht, müssen Sie nicht zwei separate Aufrufe verketten, um beispielsweise von Hexadezimal nach Binär zu wechseln.

Worauf Sie achten sollten

  • Groß-/Kleinschreibung wird normalisiert. Eingabebuchstaben können groß oder klein sein ("FF" und "ff" funktionieren beide), aber die Ausgabe ist immer in Kleinbuchstaben.
  • Brüche werden nicht unterstützt. base_convert() arbeitet nur mit ganzen Zahlen. Ein Wert wie "12.34" hat seinen . als ungültiges Zeichen — er wird entfernt, und nur die Ziffern werden konvertiert (ab PHP 8.1+ wird ein Deprecation-Hinweis für die ignorierten Zeichen ausgegeben).
  • Ungültige Ziffern werden ignoriert. Ein Zeichen, das in $from_base nicht gültig ist (zum Beispiel eine 9 bei $from_base 8), wird stillschweigend verworfen, anstatt einen Fehler auszulösen — validieren Sie Ihre Eingabe daher vorher.
  • Die Präzision ist begrenzt. Intern wird der Wert als Gleitkommazahl behandelt. Bei sehr großen Ganzzahlen kann Präzisionsverlust auftreten und ein ungenauer Wert zurückgegeben werden. Für beliebig genaue Basiskonvertierungen verwenden Sie die GMP-Erweiterung mit gmp_init() und Angabe der Basis.

Wann eine speziellere Funktion sinnvoller ist

Wenn Sie immer von oder nach Basis 10 konvertieren, sind die dedizierten Funktionen klarer und geringfügig schneller:

Greifen Sie auf base_convert() zurück, wenn keine der beiden Basen 10 ist (z. B. Hex → Binär) oder wenn die Basis ungewöhnlich ist, wie etwa Basis 36 (häufig für kurze, URL-freundliche IDs verwendet).

Fazit

base_convert() ist PHPs universelles Werkzeug, um eine ganze Zahl zwischen beliebigen zwei Zahlensystemen von Basis 2 bis Basis 36 umzuwandeln. Beachten Sie, dass es einen Kleinbuchstaben-string zurückgibt, Brüche und ungültige Ziffern ignoriert und bei sehr großen Werten durch die Gleitkomma-Präzision begrenzt ist. Für die gängigen Dezimal-nach-X-Konvertierungen sind die dedizierten dec*() / *dec()-Hilfsfunktionen in der Regel die bessere Wahl.

Übungen

Übung
Was macht die Funktion base_convert() in PHP?
Was macht die Funktion base_convert() in PHP?
Was this page helpful?