hex2bin()
La fonction hex2bin() convertit une chaîne hexadécimale en sa représentation binaire. Voici la syntaxe de la fonction hex2bin() en PHP.
La fonction PHP hex2bin() décode une chaîne de chiffres hexadécimaux pour retrouver les octets bruts qu'ils représentent. C'est l'inverse exact de bin2hex() : là où bin2hex() transforme chaque octet en deux caractères hexadécimaux, hex2bin() lit ces paires de caractères et reconstruit la chaîne d'octets d'origine. Disponible depuis PHP 5.4, sa syntaxe est la suivante.
Cette page couvre la syntaxe, la valeur de retour, un exemple de décodage fonctionnel, la gestion sécurisée des entrées invalides, et un aller-retour avec bin2hex().
Syntaxe
string|false hex2bin ( string $string )La fonction prend un paramètre obligatoire, $string, la chaîne hexadécimale à convertir. Chaque paire de caractères hexadécimaux (comme 48) correspond à un octet (H). Deux caractères formant un octet, la longueur de l'entrée doit être paire.
Valeur de retour
hex2bin() retourne la chaîne binaire décodée en cas de succès, ou false en cas d'échec. Elle échoue (et émet un avertissement) lorsque l'entrée a une longueur impaire ou contient des caractères qui ne sont pas des chiffres hexadécimaux valides (0-9, a-f, A-F). Valider l'entrée au préalable — illustré ci-dessous — permet d'éviter ces avertissements.
Voici un exemple d'utilisation de la fonction hex2bin() :
Décoder une chaîne hexadécimale
Dans cet exemple, nous disposons d'une variable $hex_string contenant une chaîne hexadécimale. Nous utilisons la fonction hex2bin() pour convertir la chaîne hexadécimale en sa représentation binaire.
Le résultat de ce code sera :
Hello WorldComme vous pouvez le constater, la fonction hex2bin() a converti la chaîne hexadécimale en sa représentation binaire, qui est la chaîne "Hello World".
Valider l'entrée avant le décodage
La fonction hex2bin() retourne false si la chaîne d'entrée contient des caractères hexadécimaux invalides. Pour gérer cette situation proprement et éviter les avertissements, vous pouvez valider l'entrée au préalable avec ctype_xdigit() (qui vérifie que chaque caractère est un chiffre hexadécimal) :
Dans cet exemple, la variable $invalid_hex_string contient une chaîne hexadécimale de longueur impaire (et donc invalide). Nous utilisons ctype_xdigit() pour vérifier que la chaîne ne contient que des caractères hexadécimaux valides avant d'appeler hex2bin(). Si la validation échoue, nous affichons un message d'erreur ; sinon, nous convertissons la chaîne en binaire en toute sécurité.
Aller-retour avec bin2hex()
hex2bin() et bin2hex() sont des fonctions inverses, donc encoder une chaîne puis la décoder renvoie la valeur d'origine. C'est pratique lorsque vous devez stocker ou transmettre des données binaires en ASCII simple (par exemple dans une URL ou une colonne texte) et les récupérer ultérieurement :
<?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)
?>Le résultat de ce code sera :
48656c6c6f20576f726c64
Hello World
bool(true)La valeur décodée étant identique à l'originale, var_dump() affiche bool(true).
Quand l'utiliser
Utilisez hex2bin() chaque fois que vous recevez des données encodées en hexadécimal et que vous avez besoin de retrouver les octets bruts — les cas courants incluent la lecture de hachages ou de clés stockés sous forme de chaînes hexadécimales, le décodage de valeurs produites par bin2hex(), et la reconstruction de charges utiles binaires (images, blobs chiffrés) qui ont été transportées sous forme de texte.
Fonctions associées
bin2hex()— convertit une chaîne binaire en sa représentation hexadécimale (l'inverse dehex2bin()).dechex()— convertit un entier décimal en une chaîne hexadécimale.hexdec()— convertit une chaîne hexadécimale en un entier décimal.