W3docs

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

php— editable, runs on the server

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 World

Come 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):

php— editable, runs on the server

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 di hex2bin()).
  • dechex() — converte un numero intero decimale in una stringa esadecimale.
  • hexdec() — converte una stringa esadecimale in un numero intero decimale.

Esercizio

Pratica
Cosa fa la funzione hex2bin() in PHP?
Cosa fa la funzione hex2bin() in PHP?
Was this page helpful?