Aktueller Standort: Startseite> Neueste Artikel> BindEc -Funktionsparsing: Hat das Präfix der binären Zeichenfolgen mit "0B" beeinflusst?

BindEc -Funktionsparsing: Hat das Präfix der binären Zeichenfolgen mit "0B" beeinflusst?

M66 2025-06-12

In PHP ist die BindEc -Funktion eine gemeinsame Funktion, mit der binäre Zeichenfolgen in Dezimalwerte umgewandelt werden. Die grundlegende Nutzung ist sehr einfach:

 <?php
$binaryString = "1010";
$decimal = bindec($binaryString);
echo $decimal; // Ausgabe 10
?>

Manchmal sehen wir jedoch, dass binäre numerische Zeichenfolgen mit "0B" wie "0b1010" vorangestellt sind. Was wird also passieren, wenn die Bindec -Funktion auf eine so vorangestellte Zeichenfolge trifft? Dieser Artikel wird dies ausführlich analysieren.


Wie BindEc -Funktion funktioniert

Gemäß der offiziellen Dokumentation analysiert die Bindec -Funktion alle binären Bits ('0' oder '1') von links nach rechts in der Zeichenfolge, bis das erste nicht-binäre Zeichen auftritt, und konvertiert dann den Leseteil in eine Dezimalzahlung.

Kurz gesagt, Binec konzentriert sich nur auf gültige Binärzeichen in der Zeichenfolge. Andere Zeichen führen dazu, dass das Parsen früh endet.


Der Fall von Binärstritten, das mit "0b" vorangestellt ist,

Wir können es über den Beispielcode überprüfen:

 <?php
echo bindec("1010") . "\n";     // Ausgabe 10
echo bindec("0b1010") . "\n";   // Ausgabe 0
echo bindec("b1010") . "\n";    // Ausgabe 0
echo bindec("01010") . "\n";    // Ausgabe 10
?>

Aus den Ergebnissen können Sie sehen:

  • "1010" wird normalerweise auf 10 gelöst.

  • "0b1010" gibt 0 zurück, da die Funktion während des Parsens auf den ersten Charakter '0' trifft, was eine rechtliche Binärdatum ist und der Charakter 'B' keine rechtliche Binärzahl ist, was das Parsen zum Anhalten bringt und nur '0' analysiert wird, dh in Dezimal.

  • "B1010" kehrt 0 direkt zurück, da das erste Zeichen 'B' keine binäre Zahl ist und das Parsing fehlschlägt.

  • "01010" ist eine gültige binäre Zeichenfolge mit einem Ergebnis von 10.

Dies zeigt, dass BindEc binäre Zeichenfolgen mit dem Präfix "0B" nicht unterstützt . Es wird nur gültige Binärteile im Präfix analysiert und die Parsen beenden, wenn nicht-binäre Zeichen auftreten.


Wie geht es mit binären Strings um, die mit "0b" vorangestellt sind?

Wenn Sie eine binäre Zeichenfolge mit dem Präfix "0b" analysieren müssen, können Sie dieses Präfix zuerst entfernen und dann Binec aufrufen.

Beispielcode:

 <?php
function bindec_with_prefix(string $binaryStr): int {
    // Wenn die Zeichenfolge ist '0b' oder '0B' Anfang,Präfixe entfernen
    if (stripos($binaryStr, '0b') === 0) {
        $binaryStr = substr($binaryStr, 2);
    }
    return bindec($binaryStr);
}

echo bindec_with_prefix("0b1010"); // Ausgabe 10
echo "\n";
echo bindec_with_prefix("1010");   // Ausgabe 10
?>

Nach dieser Verarbeitung kann es korrekt in eine Dezimalzahl konvertiert werden, unabhängig davon, ob die Zeichenfolge mit "0B" vorangestellt ist.


Zusammenfassen

  • Die Bindec -Funktion in PHP akzeptiert nur reine binäre Zeichenfolgen (bestehend aus '0' und '1') und hört auf, nicht-binäre Zeichen zu analysieren.

  • Das vorangestellte mit einem "0B" in der binären Zeichenfolge führt dazu, dass Bindec ein Fehlerergebnis zurückgibt (normalerweise 0), da es am 'B' -Zeichen aufhört.

  • Wenn Sie eine Zeichenfolge mit dem Präfix "0B" analysieren möchten, sollten Sie zuerst das Präfix entfernen und dann Binec aufrufen.

Wenn Sie diesen Punkt verstehen, vermeiden Sie das direkte Übergeben von Zeichenfolgen mit dem "0B" -Präfix direkt, wodurch viele unnötige Fehler und Debugg -Zeiten vermieden werden können.