In questo articolo puoi imparare come fare la conversione esadecimale dei numeri decimali, in cosa consistono le codifiche ASCII/UNICODE e ti forniremo una tabella di conversione completa tra ASCII, esadecimale, ottale, decimale e binario. Troverai anche altri utili strumenti per effettuare la conversione, come i convertitori automatici Excel.

La codifica che si ottiene utilizzando un sistema di numerazione a base 16 è detta esadecimale. L’importanza di questo tipo di codifica risiede nella possibilità da essa offerta di scrivere in maniera compatta lunghe stringhe di bit. Infatti, quasi tutti i moderni sistemi operativi e gli strumenti per lo sviluppo del software consentono all’utente o al programmatore di visualizzare gli indirizzi ed il contenuto della memoria in forma esadecimale. Inoltre la documentazione tecnica dei componenti di un computer utilizza quasi sempre la notazione esadecimale per riferirsi ad indirizzi di memoria, configurazione di registri, dati scambiati in un protocollo di comunicazione, ecc.

Indice:

Convenzioni nel sistema esadecimale

In generale è necessario specificare la base del sistema numerico attraverso il quale un determinato numero è espresso. Quando ciò non viene fatto, si assume che il numero in questione appartenga al sistema decimale (a base 10), che tutti siamo abituati ad utilizzare normalmente. Per indicare che un numero appartiene ad un sistema numerico diverso, solitamente si mette il numero tra parentesi e si indica la base come pedice. Per esempio, la notazione riportata di seguito indica che il numero 82 è espresso nel sistema di numerazione ottale:

(82)8

Nel caso specifico del sistema esadecimale, in alternativa è possibile anteporre il prefisso 0x o posporre la lettera H al numero stesso:

0x82 oppure 82H

A volte ci si riferisce ai sistemi di numerazione decimale, binario, ottale ed esadecimale rispettivamente con le abbreviazioni inglesi DEC, BIN, OCT ed HEX.

Conversione esadecimale

I simboli (cifre) del sistema di numerazione esadecimale sono:

S = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}

Risulta immediato comprendere che alle cifre 0,1,…,9 corrispondono le omonime cifre del sistema di numerazione decimale. Invece alle cifre A,B,…,F corrispondono i numeri decimali 10,11,…,15.

Alcuni esempi:
La cifra decimale 9 corrisponde in esadecimale a 0x9, 10 a 0xA e 15 a 0xF.
Il numero decimale 16 corrisponde a 0x10, 17 a 0x11, 18 a 0x12 e così via sino al numero 31, che corrisponde in esadecimale a 0x1F.

Procedura generale per convertire un numero decimale in esadecimale

Dato il numero decimale N, bisogna applicare il seguente procedimento:

  1. Dividere N per 16, ottenendo un quoziente Q1 ed un resto R1;
  2. Dividere Q1 per 16, ottenendo quoziente Q2 e resto R2;
  3. procedere sino a quando il quoziente ottenuto è minore di 16
  4. Qk è l’ultimo quoziente ottenuto (minore di 16).

A questo punto bisogna convertire in esadecimale i resti e l’ultimo quoziente ottenuto, partendo proprio da quest’ultimo e prendendo i resti in ordine inverso. Tutti questi, essendo numeri decimali minori di 16, saranno ovviamente rappresentati da una sola cifra esadecimale. Il risultato della conversione è dato quindi da:

(N)10 = (Qk)16 (Rk-1)16 … (R1)16

Vediamo un esempio pratico: N=(513)10

  • 513/16 = 32 (Q1) con resto 1 (R1)
  • 32/16 = 2 (Q2) con resto 0 (R2)
  • Essendo Q2 minore di 16, ci fermiamo qui.

Q2=2 in esadecimale corrisponde a 0x2, R2=0 a 0x0 ed infine R1=1 corrisponde a 0x1.

Otteniamo quindi: (513)10 = 0x201.

Sfruttare la codifica binaria

Una generica cifra esadecimale può essere rappresentata con quattro bit. Infatti, essendo 24=16, con tale numero di bit è possibile rappresentare le sedici possibili cifre del sistema esadecimale.

La conversione dal sistema di numerazione binario a quello esadecimale e viceversa, può essere realizzata seguendo un procedimento semplice ed immediato. Questo consiste nel suddividere una generica stringa binaria in gruppi da 4 bit, convertire gruppo per gruppo in decimale, e quindi convertire ancora una volta il numero decimale ottenuto nella corrispondente cifra esadecimale. La conversione inversa può essere effettuata seguendo esattamente lo stesso procedimento al contrario.

Esempio

Si consideri la seguente stringa binaria formata da 16 bit: 1111001011010001.

Si ha quindi (1111001011010001)2 = (F2D1)16

Per effettuare la conversione da decimale ad esadecimale di numeri grandi, in molti casi risulta più semplice effettuare prima la conversione da decimale a binario e dopo da binario ad esadecimale. A questo proposito ti suggeriamo di accedere al Convertitore Decimale Binario. Oltre ad una spiegazione della conversione, potrai scaricare gratuitamente il convertitore Excel semplicissimo da utilizzare e utile per comprendere i singoli passaggi della procedura.

Analogamente, per la conversione da esadecimale a decimale potrebbe essere conveniente fare il doppio passaggio: da esadecimale a binario e da binario a decimale. Anche in questo caso puoi accedere al Convertitore Binario Decimale, composto da una spiegazione della conversione ed un convertitore Excel scaricabile gratuitamente.

Codifica dei caratteri ASCII e UNICODE

Adesso che abbiamo visto la conversione esadecimale, diamo uno sguardo ad altre due codifiche di fondamentale importanza. Sebbene, come detto, sia possibile esprimere in maniera rigorosa la corrispondenza tra i numeri decimali ed i numeri binari, non esiste alcun procedimento matematico per assegnare una stringa binaria ad un generico carattere non numerico. Poiché praticamente tutte le applicazioni richiedono la possibilità di trattare dati non numerici, e poiché tutti i dati all’interno di un sistema di elaborazione digitale devono essere comunque ricondotti a stringhe binarie (e quindi numeri), si ha la necessità di trovare delle regole per assegnare dei valori numerici a tutti i possibili caratteri che possono essere immessi tramite un dispositivo di input (tastiera) o inviati su un dispositivo di output (monitor).

Considerato che l’unico obiettivo è quello di trovare un modo per rappresentare caratteri alfabetici all’interno di un computer, le regole di corrispondenza possono essere, almeno in linea di principio, completamente arbitrarie e non esiste alcun vincolo sulla questione di quali valori numerici associare ai caratteri alfabetici. Tuttavia, la necessità di un “linguaggio” comune a tutti i dispositivi di input e di output (quasi mai fabbricati dallo stesso costruttore) e più in generale a tutti i computer, ha portato alla definizione di standard internazionali che consentono di realizzare dispositivi compatibili tra loro.

Due degli standard più importanti sono ASCII (American Standard Code for Information Interchange) e UNICODE. Nel codice ASCII ogni carattere alfanumerico è rappresentato con 7 bit, mentre nel codice UNICODE, nato dall’accordo di diverse aziende ed ormai universalmente supportato da tutti i linguaggi di programmazione e sistemi operativi, ogni carattere è rappresentato per mezzo di 16 bit (questa codifica include molti più caratteri: orientali, lettere greche, ecc.).

Tabella di conversione ASCII, Decimale, Ottale, Esadecimale e Binario

La tabella sotto riporta i diversi simboli del codice ASCII e le corrispondenti numerazioni DEC, OCT, HEX e BIN. Come è possibile notare, il codice ASCII include alcuni caratteri di controllo appositamente pensati per la trasmissione di dati (SOH, STX, ecc.). In realtà nella pratica tali caratteri non sono quasi mai impiegati dai protocolli di comunicazione. Bisogna dire che esiste anche una versione ad 8 bit del codice ASCII (Extended ASCII) che quindi consente di rappresentare 256 caratteri alfanumerici (il doppio).

Clicca qui per scaricare la tabella di conversione in formato Excel:

Editor esadecimale e conversione

Questo tipo di software consente di visualizzare in formato esadecimale i byte che costituiscono qualsiasi tipo file. Gli editor esadecimali permettono inoltre di modificare i file intervenendo sui singoli byte. Questi editor possono essere utili in diversi contesti come hacking/cracking, recupero dati da file corrotti o modifica di file eseguibili (binari) a vari scopi.

Se hai bisogno di un buon editor esadecimale ti suggeriamo HxD. Questo specifico software è disponibile gratuitamente anche per windows in italiano.

In alternativa puoi usare Mobilefish, un editor accessibile direttamente online senza necessità di download e installazione. Molto semplice ed immediato da utilizzare. Riportiamo di seguito uno screenshot a scopo illustrativo. Dall’osservazione dell’immagine puoi facilmente notare come questo editor permetta anche di gestire la conversione esadecimale.

editor esadecimale

Risorse correlate:
Convertitore Decimale Binario, Convertitore Binario Decimale

Leggi anche Processori e aritmetica binaria

Per rimanere aggiornato su questo e altri argomenti iscriviti alla Newsletter.