hex2bin()
Die Funktion hex2bin() wandelt einen hexadezimalen String in seine binäre Darstellung um. Die Syntax der Funktion hex2bin() lautet wie folgt:
Die PHP-Funktion hex2bin() dekodiert einen String aus hexadezimalen Ziffern zurück in die rohen Bytes, die sie repräsentieren. Sie ist das genaue Gegenteil von bin2hex(): Während bin2hex() jedes Byte in zwei Hex-Zeichen umwandelt, liest hex2bin() diese Zeichenpaare und baut den ursprünglichen Byte-String wieder auf. Verfügbar seit PHP 5.4 lautet die Syntax wie folgt.
Diese Seite behandelt die Syntax, den Rückgabewert, ein funktionierendes Dekodierungsbeispiel, den sicheren Umgang mit ungültigen Eingaben und einen Rundlauf mit bin2hex().
Syntax
string|false hex2bin ( string $string )Die Funktion nimmt einen erforderlichen Parameter entgegen, $string, den zu konvertierenden hexadezimalen String. Jedes Paar von Hex-Zeichen (wie etwa 48) entspricht einem Byte (H). Da zwei Zeichen ein Byte ergeben, muss die Länge der Eingabe gerade sein.
Rückgabewert
hex2bin() gibt bei Erfolg den dekodierten binären String zurück oder false bei einem Fehler. Die Funktion schlägt fehl (und gibt eine Warnung aus), wenn die Eingabe eine ungerade Länge hat oder Zeichen enthält, die keine gültigen Hex-Ziffern sind (0-9, a-f, A-F). Durch eine vorherige Validierung der Eingabe — wie unten gezeigt — lassen sich diese Warnungen vermeiden.
Hier ist ein Beispiel für die Verwendung der Funktion hex2bin():
Dekodierung eines Hex-Strings
In diesem Beispiel haben wir eine String-Variable $hex_string, die einen hexadezimalen String enthält. Wir verwenden die Funktion hex2bin(), um den hexadezimalen String in seine binäre Darstellung zu konvertieren.
Die Ausgabe dieses Codes lautet:
Hello WorldWie zu sehen ist, hat die Funktion hex2bin() den hexadezimalen String in seine binäre Darstellung umgewandelt, nämlich den String "Hello World".
Eingabe vor der Dekodierung validieren
Die Funktion hex2bin() gibt false zurück, wenn der Eingabe-String ungültige hexadezimale Zeichen enthält. Um diese Situation elegant zu behandeln und Warnungen zu vermeiden, können Sie die Eingabe zunächst mit ctype_xdigit() validieren (das prüft, ob jedes Zeichen eine Hex-Ziffer ist):
In diesem Beispiel enthält die Variable $invalid_hex_string einen hexadezimalen String mit ungerader Länge (und damit ungültig). Wir verwenden ctype_xdigit(), um zu prüfen, ob der String nur gültige hexadezimale Zeichen enthält, bevor wir hex2bin() aufrufen. Wenn die Validierung fehlschlägt, geben wir eine Fehlermeldung aus; andernfalls konvertieren wir den String sicher in binär.
Rundlauf mit bin2hex()
hex2bin() und bin2hex() sind Umkehrfunktionen, sodass das Kodieren eines Strings und anschließende Dekodieren den ursprünglichen Wert zurückgibt. Dies ist praktisch, wenn Sie binäre Daten als reinen ASCII-Text speichern oder übertragen müssen (zum Beispiel in einer URL oder einer Textspalte) und diese später wiederherstellen wollen:
<?php
$original = "Hello World";
$hex = bin2hex($original); // 48656c6c6f20576f726c64
echo $hex . "\n";
$decoded = hex2bin($hex); // Hello World
echo $decoded . "\n";
var_dump($original === $decoded); // bool(true)
?>Die Ausgabe dieses Codes lautet:
48656c6c6f20576f726c64
Hello World
bool(true)Da der dekodierte Wert mit dem ursprünglichen identisch ist, gibt var_dump() bool(true) aus.
Wann sollte man es verwenden?
Verwenden Sie hex2bin(), wann immer Sie Daten empfangen, die hexadezimal kodiert wurden, und Sie die rohen Bytes zurückbenötigen — häufige Anwendungsfälle sind das Lesen von Hashes oder Schlüsseln, die als Hex-Strings gespeichert sind, das Dekodieren von Werten, die durch bin2hex() erzeugt wurden, und die Rekonstruktion binärer Nutzdaten (Bilder, verschlüsselte Blobs), die als Text übertragen wurden.
Verwandte Funktionen
bin2hex()— einen binären String in seine hexadezimale Darstellung umwandeln (das Gegenteil vonhex2bin()).dechex()— eine dezimale Ganzzahl in einen hexadezimalen String umwandeln.hexdec()— einen hexadezimalen String in eine dezimale Ganzzahl umwandeln.