W3docs

bindec()

Die Funktion bindec() in PHP wandelt eine Binärzahl in eine Dezimalzahl um. Hier erfahren Sie Syntax, Beispiele und typische Anwendungsfälle.

Die Funktion bindec() wandelt eine Zeichenkette aus Binärziffern (Basis 2) in den entsprechenden Dezimalwert (Basis 10) um. Sie ist das Gegenstück zu decbin() und die richtige Wahl, wenn Sie Binärdaten — etwa eine Berechtigungsmaske, ein Bit-Flag oder einen aus Text geparsten Wert — einlesen und eine gewöhnliche Ganzzahl daraus benötigen.

Syntax

bindec(string $binary_string): int|float
  • $binary_string — die zu konvertierende Binärzahl, übergeben als string aus 0en und 1en (z. B. "1010").
  • Rückgabewert — der entsprechende Dezimalwert. Wenn der Wert in den PHP-Integer-Bereich passt, wird ein int zurückgegeben; bei sehr großen Binärzahlen, die sonst überlaufen würden, ein float.

Ein einfaches Beispiel

php— editable, runs on the server

Der Binär-string "1010" entspricht 1×8 + 0×4 + 1×2 + 0×1 = 10, daher gibt bindec() den Wert 10 zurück.

Warum einen string und keine Zahl übergeben?

Ein häufiger Anfängerfehler ist, bindec(1010) ohne Anführungszeichen zu schreiben. Bei kleinen Werten funktioniert das zufällig, aber ein Literal wie 0101 wird von PHP als oktale Zahl interpretiert, noch bevor bindec() es überhaupt zu sehen bekommt. Außerdem gehen bei großen Binärliteralen führende Nullen verloren. Übergeben Sie den Binärwert daher immer als Zeichenkette in Anführungszeichen, damit die Ziffern unverändert ankommen:

<?php
echo bindec("00001111"); // 15 — leading zeros are fine in a string
?>

Umgang mit ungültigen Zeichen

bindec() versteht nur 0 und 1. Jedes andere Zeichen wird stillschweigend ignoriert (ab PHP 8.1+ wird dabei ein Deprecation-Hinweis ausgegeben), sodass das Ergebnis möglicherweise nicht den Erwartungen entspricht:

<?php
echo bindec("1012"); // 5 — the "2" is ignored, leaving "101" = 5
echo "\n";
echo bindec("");     // 0 — an empty string is treated as zero
?>

Da die Funktion Fehler lautlos verschluckt, sollten Sie benutzerseitige Eingaben zunächst mit preg_match('/^[01]+$/', $value) validieren, bevor Sie sie konvertieren.

Hin- und Rückkonvertierung mit decbin()

bindec() und decbin() sind gegenseitige Umkehrfunktionen, was beim Prüfen oder Erstellen von Bit-Masken sehr praktisch ist:

<?php
$decimal = 42;

$binary = decbin($decimal);  // "101010"
$back    = bindec($binary);  // 42

echo "$decimal -> $binary -> $back"; // 42 -> 101010 -> 42
?>

Praktisches Beispiel: Bit-Flags auslesen

Binärstrings sind eine einfache Möglichkeit, eine Menge von An/Aus-Optionen zu beschreiben. Die Umwandlung in eine Dezimalzahl erlaubt es, einzelne Bits mit dem bitweisen AND-Operator zu prüfen:

<?php
define('READ',    bindec("100")); // 4
define('WRITE',   bindec("010")); // 2
define('EXECUTE', bindec("001")); // 1

$permissions = bindec("110"); // READ + WRITE = 6

echo ($permissions & WRITE)   ? "can write\n"   : "cannot write\n";   // can write
echo ($permissions & EXECUTE) ? "can execute\n" : "cannot execute\n"; // cannot execute
?>

Verwandte Konvertierungsfunktionen

FunktionKonvertiert
decbin()Dezimal → Binär-string
hexdec()Hexadezimal → Dezimal
octdec()Oktal → Dezimal
base_convert()zwischen beliebigen zwei Basen (2–36)

Fazit

bindec() wandelt einen Binär-string in eine Dezimalzahl um und gibt dabei einen int zurück (oder einen float bei sehr großen Werten). Denken Sie daran, den Wert stets als Zeichenkette in Anführungszeichen zu übergeben, ihn vorab zu validieren, da nicht-binäre Zeichen stillschweigend ignoriert werden, und die Funktion mit decbin() zu kombinieren, wenn Sie in die entgegengesetzte Richtung konvertieren möchten. Mit diesen Hilfsmitteln können Sie komfortabel mit Bit-Masken, Flags und beliebigen in Basis 2 gespeicherten Daten arbeiten.

Übungen

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