Bei der Verarbeitung der zugrunde liegenden Daten oder der Netzwerkprogrammierung begegnen wir häufig auf die Notwendigkeit, zwischen Binär und Hexadezimal umzuwandeln. Glücklicherweise bietet PHP einfache und benutzerfreundliche integrierte Funktionen, mit denen wir diese Aufgabe erfüllen können, und die am häufigsten verwendeten sind Binec () und Base_Convert () .
Binec () ist eine integrierte Funktion in PHP, die binäre Zeichenfolgen in Dezimalzahlen umwandelt. deChex () kann Dezimalzahlen in hexadezimale Saiten umwandeln. Wenn wir diese beiden Funktionen kombinieren, können wir die binäre bis hexadezimale Umwandlung abschließen.
In diesem Beispiel wird 11010110 in Dezimalal in 214 und dann in Hexadezimal in D6 umgewandelt.
Wenn Sie der Meinung sind, dass es zu mühsam ist, zuerst Dezimal und dann hexadezimal zu machen, bietet PHPs base_convert () eine direktere Methode. Mit dieser Funktion können wir die Quellkardinalität und die Zielkardinalität direkt angeben, wodurch die binäre Konvertierung schnell implementiert wird.
Der erste Parameter dieser Funktion ist der String, der konvertiert werden soll, der zweite Parameter ist der ursprüngliche Binär (hier ist 2) und der dritte Parameter ist das Ziel -Binärdatus (hier ist 16).
Die bestandene binäre Zeichenfolge muss eine rechtliche Binärnummer (einschließlich nur 0 und 1) sein, ansonsten können sowohl Binec () als auch Base_Convert () unerwartete Ergebnisse zurückgeben.
Bei Verwendung von Base_Convert () ist der Rückgabewert ein String -Typ. Wenn die Hexadezimalzahl weiterhin zwischen anderen Binärzahlen umwandeln muss, sollten Sie auf die Typumwandlung achten.
Wenn Sie die Anzahl der Ziffern ausfüllen müssen, können Sie die Funktion str_pad () verwenden. Um beispielsweise immer eine 2-Bit-Hexadezimalzahl auszugeben, können Sie sie so schreiben:
Diese Konvertierung ist in Szenarien wie Netzwerkdatenpaketen, Farbcodes (wie RGB -Werten), Bitmap -Daten usw. sehr häufig vorkommt. Wenn Sie beispielsweise einen Binärdatenstrom erhalten, möchten Sie ihn in hexadezimaler Form zum Debuggen ausdrucken:
<code> $ data = ['11000011', '10101010', '11110000']; foreach ($ data as $ binary) {echo Strtoupper (Base_Convert ($ Binary, 2, 16)). ""; } // Ausgabe: C3 AA F0 </code>Sie können das Ergebnis auch als hexadezimale Farbe ausgeben, zum Beispiel:
<code> $ r = '11110000'; $ g = '10101010'; $ B = '11000011'; $ hexcolor = '#'. Strtoupper (Base_Convert ($ r, 2, 16)). Strtoupper (Base_Convert ($ G, 2, 16)). Strtoupper (Base_Convert ($ b, 2, 16)); echo $ hexcolor; // Ausgabe: #F0AAC3 </code>Wenn Sie ein Stück binär codierte Daten von einer Remote -Schnittstelle erhalten, z. B.:
<code> $ response = file_get_contents ('https://m66.net/api/data/binary'); $ data = json_decode ($ response, true); // Angenommen, die zurückgegebene ist ['11001100', '11110000'] foreach ($ data as $ binary) {echo Strtoupper (Base_Convert ($ Binary, 2, 16)). ""; } // Ausgabe: CC F0 </code>Durch Kombinieren von File_get_Contents () , json_decode () und base_convert () können wir Binärdaten schnell in ein lesbares hexadezimales Format zur Verarbeitung und Anzeige konvertieren.