bin2hex()
Die PHP-Funktion bin2hex() wandelt binäre Daten in eine hexadezimale Zeichenkette um. Syntax und Beispiele erklärt.
Die PHP-Funktion bin2hex() wandelt einen string aus rohen Bytes in seine hexadezimale Darstellung um. Jedes Byte (8 Bit) wird zu genau zwei hexadezimalen Ziffern, sodass der zurückgegebene string immer doppelt so lang ist wie die Eingabe. Trotz des Namens ist die Eingabe jeder binärsichere string — kein string aus "0"/"1"-Zeichen — was bin2hex() zur Standardmethode macht, beliebige binäre Daten (Bild-Bytes, Verschlüsselungsschlüssel, Hashes) in eine sichere, druckbare ASCII-Form umzuwandeln.
Diese Seite behandelt die Syntax, ein praktisches Beispiel, den Unterschied zu verwandten Funktionen und häufige Fallstricke.
Syntax
bin2hex(string $string): stringDie Funktion nimmt einen einzigen Parameter, $string — die zu kodierenden binären Daten — und gibt einen string aus kleingeschriebenen hexadezimalen Zeichen zurück (0-9, a-f). Die Funktion ist seit PHP 4.0.5 verfügbar und gibt niemals false zurück.
Grundlegendes Beispiel
Hier wird der Text "Hello, World!" an bin2hex() übergeben, das den Byte-Wert jedes Zeichens als zwei Hex-Ziffern kodiert. Die Ausgabe lautet:
48656c6c6f2c20576f726c6421Das erste Zeichen H hat zum Beispiel den Byte-Wert 0x48, e ist 0x65 usw. — die Verkettung dieser Paare ergibt das obige Ergebnis.
Warum bin2hex() verwenden
Der häufigste Grund ist, binäre Daten sicher zu drucken, zu protokollieren, in einer Textspalte zu speichern oder in einer URL zu senden. Rohe Bytes können nicht druckbare oder Steuerzeichen enthalten; ihre Hex-Form ist reines ASCII.
<?php
// Generate 8 random bytes and show them as a hex token.
$bytes = random_bytes(8);
echo bin2hex($bytes); // e.g. "9f3a1c84e2b07d56" (16 hex chars)
?>Es wird ein 16-Zeichen-Token erzeugt, weil 8 Bytes auf 16 Hex-Ziffern abgebildet werden.
Die Umwandlung umkehren
Verwenden Sie hex2bin(), um einen hexadezimalen string zurück in die ursprünglichen Bytes zu konvertieren. Die beiden Funktionen sind für jede gültige Eingabe exakte Umkehrungen voneinander:
<?php
$original = "PHP";
$hex = bin2hex($original); // "504850"
$restored = hex2bin($hex); // "PHP"
var_dump($original === $restored); // bool(true)
?>bin2hex() vs. dechex()
Diese Funktionen werden leicht verwechselt:
bin2hex()arbeitet auf einem string aus Bytes und kodiert jeden Byte als zwei Hex-Ziffern.dechex()arbeitet auf einem einzelnen Integer und gibt seine Hex-Form ohne führende Nullen zurück.
<?php
echo bin2hex("A"); // "41" (the byte 0x41)
echo "\n";
echo dechex(65); // "41" (the integer 65)
echo "\n";
echo dechex(10); // "a" (no leading zero)
?>Fallstricke
- Nur Kleinbuchstaben.
bin2hex()gibt immer Kleinbuchstaben aus. Wenn Sie Großbuchstaben benötigen, wenden Siestrtoupper()auf das Ergebnis an. - Länge wird verdoppelt. Die Ausgabelänge ist immer
2 * strlen($input); ein leerer string gibt einen leeren string zurück. - Es ist keine Verschlüsselung. Hex-Kodierung ist vollständig umkehrbar und bietet keine Sicherheit — sie ändert nur die Darstellung. Für Hashing verwenden Sie
md5()odersha1(), die bereits Hex-strings zurückgeben.
Verwandte Funktionen
hex2bin()— die umgekehrte Operation.dechex()— einen einzelnen Integer in Hexadezimal umwandeln.ord()— den Byte-Wert eines einzelnen Zeichens ermitteln.strlen()— die Byte-Länge eines string messen.