hex2bin()
La funzione hex2bin() converte una stringa esadecimale nella sua rappresentazione binaria. La sintassi della funzione hex2bin() è la seguente:
La funzione PHP hex2bin() decodifica una stringa di cifre esadecimali riconvertendola nei byte grezzi che rappresenta. È l'inverso esatto di bin2hex(): mentre bin2hex() trasforma ogni byte in due caratteri esadecimali, hex2bin() legge quelle coppie di caratteri e ricostruisce la stringa di byte originale. Disponibile a partire da PHP 5.4, la sua sintassi è la seguente.
Questa pagina illustra la sintassi, il valore di ritorno, un esempio di decodifica funzionante, come gestire in modo sicuro gli input non validi e un ciclo completo con bin2hex().
Sintassi
string|false hex2bin ( string $string )La funzione accetta un parametro obbligatorio, $string, la stringa esadecimale da convertire. Ogni coppia di caratteri esadecimali (come 48) corrisponde a un byte (H). Poiché due caratteri formano un byte, la lunghezza dell'input deve essere pari.
Valore di ritorno
hex2bin() restituisce la stringa binaria decodificata in caso di successo, oppure false in caso di errore. Fallisce (emettendo un avviso) quando l'input ha una lunghezza dispari o contiene caratteri che non sono cifre esadecimali valide (0-9, a-f, A-F). Validare prima l'input — come mostrato di seguito — consente di evitare tali avvisi.
Ecco un esempio di utilizzo della funzione hex2bin():
Decodifica di una stringa esadecimale
In questo esempio, la variabile $hex_string contiene una stringa esadecimale. Utilizziamo la funzione hex2bin() per convertire la stringa esadecimale nella sua rappresentazione binaria.
L'output di questo codice sarà:
Hello WorldCome si può vedere, la funzione hex2bin() ha convertito la stringa esadecimale nella sua rappresentazione binaria, che corrisponde alla stringa "Hello World".
Validare l'input prima della decodifica
La funzione hex2bin() restituisce false se la stringa di input contiene caratteri esadecimali non validi. Per gestire questa situazione correttamente ed evitare avvisi, è possibile validare prima l'input con ctype_xdigit() (che verifica che ogni carattere sia una cifra esadecimale):
In questo esempio, la variabile $invalid_hex_string contiene una stringa esadecimale di lunghezza dispari (e quindi non valida). Utilizziamo ctype_xdigit() per verificare che la stringa contenga solo caratteri esadecimali validi prima di chiamare hex2bin(). Se la validazione fallisce, viene visualizzato un messaggio di errore; altrimenti, la stringa viene convertita in binario in modo sicuro.
Ciclo completo con bin2hex()
hex2bin() e bin2hex() sono funzioni inverse, quindi codificare una stringa e poi decodificarla restituisce il valore originale. Questo è utile quando si ha la necessità di memorizzare o trasmettere dati binari come testo ASCII semplice (ad esempio in un URL o in una colonna di testo) e recuperarli in seguito:
<?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)
?>L'output di questo codice sarà:
48656c6c6f20576f726c64
Hello World
bool(true)Poiché il valore decodificato è identico all'originale, var_dump() riporta bool(true).
Quando utilizzarla
Utilizzare hex2bin() ogni volta che si ricevono dati codificati in esadecimale e si ha bisogno di recuperare i byte grezzi — i casi più comuni includono la lettura di hash o chiavi memorizzate come stringhe esadecimali, la decodifica di valori prodotti da bin2hex() e la ricostruzione di payload binari (immagini, blob cifrati) che sono stati trasmessi come testo.
Funzioni correlate
bin2hex()— converte una stringa binaria nella sua rappresentazione esadecimale (l'inverso dihex2bin()).dechex()— converte un numero intero decimale in una stringa esadecimale.hexdec()— converte una stringa esadecimale in un numero intero decimale.