§

Options

§

Binario (base 2)

§

Ottale (base 8)

§

Decimale (base 10)

§

Esadecimale (base 16)

§

Base personalizzata

Al Politecnico di Milano il Dipartimento di Elettronica, Informazione e Bioingegneria usa la conversione di base come pietra angolare del corso di Architettura dei Calcolatori: la codifica IEEE 754 a singola precisione è esercizio ricorrente, con studenti che scompongono pattern a 32 bit in segno, esponente e mantissa. All'INFN, nei laboratori che partecipano agli esperimenti CERN, i tecnici analizzano dump binari ed esadecimali dei detector per diagnosticare errori di acquisizione dati, convertendo rapidamente tra hex e decimale per confrontare indirizzi di registro con le specifiche firmware.

Come funziona la conversione di base

Ogni sistema numerico posizionale rappresenta un valore come somma di cifre moltiplicate per potenze della base. Cambiare base significa riscrivere lo stesso valore rispetto a una serie di potenze diversa.

  1. Valida l'alfabeto di input. Ogni base accetta un insieme specifico di cifre. Il binario accetta 0 e 1; l'ottale accetta 0-7; il decimale accetta 0-9; l'esadecimale accetta 0-9 e A-F. Un carattere fuori dall'alfabeto scelto mostra un errore inline prima che avvenga qualsiasi conversione.
  2. Analizza il valore. Per valori che rientrano in un Number JavaScript (fino a 2^53-1) lo strumento chiama parseInt(text, base). Oltre tale limite ricorre a BigInt in modo che la conversione rimanga esatta per interi arbitrariamente grandi.
  3. Renderizza in ogni base di destinazione. Il valore analizzato viene convertito in ciascuna base di output tramite Number.prototype.toString(base) o BigInt.prototype.toString(base). I quattro pannelli standard (binario, ottale, decimale, hex) e il pannello con base personalizzata si aggiornano insieme.
  4. Applica la formattazione. Un'opzione per il prefisso aggiunge 0b, 0o o 0x all'inizio dell'output binario, ottale ed esadecimale. Il raggruppamento delle cifre inserisce un trattino basso ogni quattro cifre binarie e ogni due cifre hex. Un'opzione per le maiuscole sceglie lettere maiuscole o minuscole per A-F.
  5. Sincronizzazione live tra pannelli. La modifica di qualsiasi pannello attiva una riconversione con debounce di 100 ms che aggiorna gli altri pannelli. Il pannello in cui si sta digitando è trattato come fonte di verità a ogni pressione di tasto.

Perché usare un convertitore di basi

  • Lettura di memory dump. Debugger, disassembler e visualizzatori di core dump mostrano indirizzi e valori di registro in hex. Tradurli in decimale li rende confrontabili con conteggi, dimensioni e offset riportati altrove nella stessa traccia.
  • Lavoro con codici colore. CSS, strumenti di design e formati immagine esprimono i colori in triplette hex come #d2511a. Convertire ogni coppia in decimale trasforma lo stesso colore nella forma rgb(210, 81, 26) che il tuo selettore di colori o il verificatore di accessibilità si aspetta.
  • Decodifica dei permessi file. I valori chmod di Unix sono scritti in ottale: 755 significa rwxr-xr-x una volta che si traduce ogni cifra ottale nei suoi tre bit binari. Il convertitore mostra quella mappatura in un solo passaggio, senza dover consultare una man page.
  • Debug dei bit flag. I protocolli di rete, le syscall del kernel e i registri hardware comprimono molti flag booleani in un singolo intero. Leggere l'intero in binario mostra immediatamente quali bit sono impostati, il che è essenziale quando si cerca di capire perché un flag non ha effetto.

Applicazioni comuni

La conversione di base è presente nel lavoro quotidiano di sviluppatori, esperti di sicurezza e tecnici hardware ogni volta che un numero è più di un semplice conteggio.

  • Firmware embedded: leggi un hex dump da una sonda JTAG, individua l'indirizzo di una funzione e scrivi un comando breakpoint usando l'offset decimale accettato dal tuo script di debug.
  • Sicurezza di rete: analizza una netmask a 32 bit stampata in decimale separato da punti riconvertendola in binario per contare la lunghezza del prefisso, poi scrivi la forma CIDR per una regola ACL.
  • Sfide CTF e crittografia: alterna tra hex, decimale e binario mentre confronti un frammento di chiave trapelata con un candidato in chiaro sotto XOR.

Un esempio pratico

Digita 255 nel pannello decimale. Il pannello hex si aggiorna a FF (o 0xFF con il prefisso attivo), quello binario a 11111111 (raggruppato come 1111_1111) e quello ottale a 377. Imposta la radice del pannello personalizzato a 36 e lo stesso valore appare come 73. Digita un valore molto più grande come 123456789012345678901234567890 nel pannello decimale; il pannello hex usa il percorso BigInt e mostra 18EE90FF6C373E0EE4E3F0AD2.

FAQ

Che cos'è una base numerica?

Una base numerica, o radice, indica quante cifre distinte usa un sistema posizionale prima di effettuare un riporto alla posizione successiva. Il decimale (base 10) usa 0-9; il binario (base 2) usa solo 0 e 1; l'esadecimale (base 16) usa 0-9 più A-F. Il valore di un numero non cambia quando si cambia base — cambia solo il modo in cui le sue cifre sono scritte e raggruppate.

Perché usare l'esadecimale nella programmazione?

Una cifra hex corrisponde esattamente a quattro bit binari, quindi due cifre hex coprono un byte e otto cifre hex coprono una parola a 32 bit. Questo rende l'esadecimale la forma più compatta e leggibile per indirizzi di memoria, contenuti di registro, triplette di colori e chiavi crittografiche. Leggere 0xFF è più rapido che leggere 11111111, e il pattern di bit è subito disponibile quando serve.

Posso convertire oltre la base 36?

Questo strumento si ferma alla base 36 perché è il limite superiore delle API JavaScript native parseInt e toString, che accettano 0-9 seguito da A-Z come alfabeto di cifre. Le basi 37-62 sono possibili con un alfabeto personalizzato (Base58 usato negli indirizzi Bitcoin è un esempio) ma sono previste come strumento separato perché ogni base superiore necessita del proprio ordine canonico delle cifre.

Gestisce numeri negativi e in virgola mobile?

Gli interi negativi sono mostrati con un segno meno iniziale in ogni base, lo stesso comportamento di Number.prototype.toString. La rappresentazione in complemento a due per una larghezza di bit scelta (8, 16, 32, 64) è una vista separata che prevediamo di aggiungere. Anche la conversione di base in virgola mobile è fuori dal campo di questa versione; lo strumento gestisce solo valori interi.

La conversione di base è un'operazione semplice che ricorre continuamente nel lavoro su firmware, sicurezza e grafica. Eseguirla in una scheda del browser, con le stesse primitive aritmetiche già presenti in Node e V8, mantiene il lavoro veloce e i dati sul tuo computer.