decbin()
Die Funktion decbin() in PHP konvertiert eine Dezimalzahl in eine binäre Darstellung und gibt sie als string zurück.
Die Funktion decbin() wandelt eine dezimale (Basis 10) Ganzzahl in ihre binäre (Basis 2) Darstellung um und gibt sie als string zurück. Sie ist das Gegenstück zu bindec(), das die umgekehrte Konvertierung durchführt. Diese Seite behandelt die Syntax, den Rückgabewert, Besonderheiten bei negativen Zahlen und die Formatierung der Ausgabe.
Syntax
decbin(int $num): string$num— die zu konvertierende Dezimalganzzahl. Gleitkommazahlen werden stillschweigend zu Ganzzahlen gekürzt, und boolean-Werte werden umgewandelt (truewird zu1).- Rückgabewert — ein string aus
0- und1-Zeichen. Da es sich um einen string und keine Zahl handelt, werden führende Nullen nie erzeugt, und das Ergebnis lässt sich sicher verketten oder auffüllen.
Einfaches Beispiel
Wir weisen einen Dezimalwert zu, übergeben ihn an decbin() und geben den zurückgegebenen string aus. Dezimal 10 entspricht 1010 in Binärdarstellung (8 + 2).
Mehrere Werte konvertieren
Da die Funktion einen einfachen string zurückgibt, lässt er sich direkt formatieren. Hier einige gängige Konvertierungen:
<?php
echo decbin(0); // 0
echo "\n";
echo decbin(1); // 1
echo "\n";
echo decbin(255); // 11111111
echo "\n";
echo decbin(256); // 100000000
?>255 ist der größte Wert, der in ein Byte passt – deshalb ergibt er acht 1-Bits.
Ausgabe auf eine feste Breite auffüllen
decbin() fügt niemals führende Nullen hinzu, sodass decbin(5) "101" zurückgibt, nicht "00000101". Wenn Sie eine feste Bitbreite benötigen (um zum Beispiel jeden Wert als Byte darzustellen), verwenden Sie str_pad():
<?php
$value = 5;
// Pad to 8 bits with leading zeros
echo str_pad(decbin($value), 8, "0", STR_PAD_LEFT); // 00000101
?>Das funktioniert genau deshalb, weil der Rückgabewert ein string ist.
Negative Zahlen
PHP verfügt hier über keine dedizierte Vorzeichenbit-Behandlung: Eine negative Ganzzahl wird als vorzeichenloser Wert im Zweierkomplement über die gesamte Integer-Breite der Plattform interpretiert. Auf einem 64-Bit-System gibt decbin(-1) 64 Einsen zurück:
<?php
echo decbin(-1);
// 1111111111111111111111111111111111111111111111111111111111111111
?>Wenn Sie eine feste, vorhersehbare Breite benötigen, maskieren Sie den Wert zunächst — zum Beispiel liefert decbin(-1 & 0xFF) 11111111 (eine 8-Bit-Ansicht).
Hin- und Rückkonvertierung mit bindec()
decbin() und bindec() sind Umkehrfunktionen: Eine Zahl in Binär umzuwandeln und wieder zurück ergibt den ursprünglichen Wert:
<?php
$n = 42;
$binary = decbin($n); // "101010"
$back = bindec($binary); // 42
echo $back; // 42
?>Wann verwendet man diese Funktion?
- Beim Untersuchen oder Anzeigen von Bit-Mustern während des Debuggens von bitweisen Operationen (
&,|,^,<<,>>). - Beim Erstellen binärer string-Darstellungen für Lehrzwecke, Protokollierung oder einfache Datenkodierung.
- Beim Arbeiten mit Berechtigungs- oder Flag-Bitmasks, bei denen die einzelnen Bits sichtbar sein sollen.
Verwandte Funktionen
PHP enthält eine Familie von Basis-Konvertierungshilfsfunktionen. Wählen Sie diejenige, die zu Ihrer Quell- und Zielbasis passt:
bindec()— binären string zu Dezimal.dechex()— Dezimal zu Hexadezimal.hexdec()— Hexadezimal zu Dezimal.decoct()— Dezimal zu Oktal.octdec()— Oktal zu Dezimal.base_convert()— Konvertierung zwischen beliebigen Basen (2–36).
Fazit
Die Funktion decbin() wandelt eine dezimale Ganzzahl in einen binären string um. Drei Dinge sind zu beachten: Das Ergebnis ist ein string (verwenden Sie daher str_pad() für feste Breiten), negative Zahlen werden im Zweierkomplement über die gesamte Integer-Breite dargestellt, und bindec() kehrt die Konvertierung um.