Vai al contenuto

Convertitore Base Bidirezionale: Decimale, Hex, Base64

Converti numeri tra decimale e Base16 (hex), Base32 e Base64 in entrambe le direzioni, con rilevamento automatico della base. Codifica o decodifica un valore.

محول القواعد ثنائي الاتجاه

تحويل بين الأرقام العشرية وترميزات القاعدة القياسية (Base16/Hex، Base32، Base64). أدخل قيمة في أي مجال للتحويل.

أدخل عددًا صحيحًا موجبًا (الحد الأقصى: 9,007,199,254,740,991)

أدخل قيمة مرمزة بـ Base16 أو Base32 أو Base64

حول الترميزات القاعدية

Base16 (السداسي عشر): يستخدم الأحرف 0-9 و A-F. كل حرف يمثل 4 بت. يستخدم بشكل شائع لرموز الألوان وعناوين الذاكرة.
Base32: يستخدم الأحرف A-Z و 2-7. كل حرف يمثل 5 بت. غير حساس لحالة الأحرف وسهل القراءة.
Base64: يستخدم الأحرف A-Z، a-z، 0-9، +، و /. كل حرف يمثل 6 بت. يستخدم بشكل شائع لترميز البيانات الثنائية في النص.
حد العدد الصحيح الآمن: يمكن لـ JavaScript تمثيل الأعداد الصحيحة بأمان حتى 9,007,199,254,740,991 (2^53 - 1) دون فقدان الدقة.
Calcolatore di caricamento...
📚

Documentazione

Convertitore bidirezionale di base

Un convertitore di base cambia il modo in cui viene scritto un numero, senza modificarne il valore. Questo strumento converte un numero decimale in Base16 (esadecimale), Base32 o Base64 e riconverte un valore codificato in decimale. Rileva inoltre quale delle tre codifiche utilizza un valore incollato.

Che cos'è una base numerica

Una base numerica, detta anche radice, è il numero di simboli distinti che un sistema numerico utilizza per rappresentare una singola cifra. Il sistema decimale è in base 10 e usa le cifre da 0 a 9. I computer memorizzano spesso i numeri in altre basi perché queste rappresentano lo stesso valore con meno caratteri oppure perché il relativo insieme di caratteri può essere trasmesso senza problemi attraverso sistemi che gestiscono solo testo, come le email o gli URL.

Questo strumento funziona con tre basi di questo tipo:

  • Base16 (esadecimale). Utilizza i 16 simboli 0–9 e A–F. Ogni carattere memorizza 4 bit. È comune nei codici colore, negli indirizzi di memoria e nei valori hash.
  • Base32. Utilizza i 32 simboli A–Z e 2–7, definiti dallo standard Internet RFC 4648. Ogni carattere memorizza 5 bit. Evita lettere e numeri dall'aspetto simile, come 0 e O, rendendo più facile leggere il codice ad alta voce o digitarlo a mano.
  • Base64. Utilizza 64 simboli: da A a Z, da a a z, da 0 a 9, + e /, anch'essi definiti dall'RFC 4648. Ogni carattere memorizza 6 bit. È il metodo standard per incorporare dati binari nel testo, ad esempio in un allegato email o in un campo JSON.

Come convertire un numero decimale in Base16, Base32 o Base64

Lo strumento scompone innanzitutto il numero decimale in byte, gruppi di 8 bit, scritti in ordine big-endian, con il byte più significativo per primo. Legge quindi quei bit in gruppi della dimensione prevista dalla base di destinazione: 4 bit alla volta per Base16, 5 bit alla volta per Base32 oppure 6 bit alla volta per Base64. Ogni gruppo di bit viene cercato nella tabella dei simboli di quella base per produrre un carattere di output.

Poiché Base32 e Base64 leggono i bit in gruppi di 5 o 6, l'ultimo gruppo di un numero spesso non coincide con il limite di un byte di 8 bit. Lo strumento riempie i bit rimanenti con zeri e, per Base32 e Base64, aggiunge caratteri = alla fine, così la lunghezza dell'output è sempre un multiplo di 8 caratteri (Base32) o 4 caratteri (Base64).

Base16 utilizza sempre un numero intero di coppie di 2 caratteri, una coppia per byte. Un valore che richiederebbe un numero dispari di cifre esadecimali riceve invece uno zero iniziale, così la stringa rappresenta sempre un numero intero di byte.

Formula ed esempio di Base16

Ogni byte diventa esattamente due cifre esadecimali, equivalenti a 16 volte la prima cifra più la seconda:

v=a×16+bv = a \times 16 + b

dove v è il valore del byte, a la prima cifra esadecimale e b la seconda.

Esempio: 255 in decimale. 255 entra in un byte. 255 ÷ 16 = 15 con resto 15, e 15 viene scritto come F, quindi 255 diventa FF. Per questo il codice colore #FFFFFF è bianco: tre byte, ciascuno al proprio valore massimo.

Esempio: 1000 in decimale. 1000 richiede due byte: 1000 = 3 × 256 + 232. Il primo byte, 3, diventa 03. Il secondo byte, 232, è 14 × 16 + 8, che diventa E8. Letto nel suo insieme, 1000 in Base16 è 03E8, non 3E8: l'output esadecimale viene sempre completato fino a rappresentare byte interi, quindi un valore inferiore a 16 nel byte più significativo riceve comunque uno zero iniziale.

Esempi di Base32 e Base64

Utilizzando gli stessi due numeri indicati sopra:

DecimaleBase16Base32Base64
255FF74======/w==
100003E8APUA====A+g=

Come riconvertire un valore codificato in decimale

Incolla una stringa Base16, Base32 o Base64 nel campo codificato, quindi seleziona quella base dal menu a discesa accanto al campo. Lo strumento verifica i caratteri rispetto all'alfabeto della base, inverte i passaggi descritti sopra e mostra il valore decimale. La decodifica di FF come Base16 dà 255.

Lo strumento indica anche la base che un valore incollato sembra utilizzare. Questa indicazione è solo un suggerimento. È il menu a discesa a stabilire come viene letto il valore, perché l'alfabeto Base16 fa parte dell'alfabeto Base32 e una stringa breve come ABCD è un valore valido in entrambe.

L'input Base16 può mescolare maiuscole e minuscole; lo strumento tratta ff e FF allo stesso modo. Un numero dispari di cifre esadecimali viene interpretato in base al valore posizionale, assumendo uno zero iniziale, quindi 1F4 e 01F4 restituiscono entrambi 500. L'input Base32 deve essere scritto in maiuscolo: il decodificatore dello strumento non accetta le lettere Base32 minuscole e segnala un errore se le rileva. Base64 tratta le lettere maiuscole e minuscole come simboli diversi, come richiesto dal formato, quindi le maiuscole devono essere digitate esattamente come mostrato.

Alcune stringhe non possono mai essere prodotte da un codificatore e lo strumento le rifiuta invece di fare supposizioni. L'RFC 4648 costruisce Base64 in gruppi di 4 caratteri e Base32 in gruppi di 8. Ignorando l'eventuale riempimento =, una stringa Base64 con 1 carattere oltre un multiplo di 4, oppure una stringa Base32 con 1, 3 o 6 caratteri oltre un multiplo di 8, non contiene alcun byte completo. Un input di questo tipo produce un errore invece di un numero.

Limiti dell'intervallo

Il numero più grande accettato dallo strumento è 9,007,199,254,740,991, uguale a 2^53 − 1. È il numero intero più grande che il motore JavaScript di un browser web può rappresentare esattamente. Oltre questo limite, alcuni interi non possono più essere memorizzati con precisione, quindi lo strumento segnala un errore invece di restituire in silenzio una cifra errata. Sono accettati zero e qualsiasi numero intero fino a quel limite; il numero non deve essere positivo, ma solo non negativo.

Il limite si applica in entrambe le direzioni. Una stringa codificata che rappresenta un numero più grande, come il valore Base16 20000000000000 (che equivale a 2^53), viene rifiutata invece di essere arrotondata. Anche le frazioni vengono rifiutate: le codifiche descrivono byte interi, quindi 1.5 produce un errore invece di un risultato arrotondato.

Dove viene utilizzata ciascuna codifica

  • Base16 compare nei valori dei colori CSS e HTML, negli indirizzi MAC e IPv6 e nei valori hash utilizzati per verificare che un file non sia stato alterato.
  • Base32 compare nelle chiavi di configurazione dell'autenticazione a due fattori, in alcuni sistemi di condivisione dei file e in altri identificatori destinati a essere letti ad alta voce o digitati a mano.
  • Base64 compare negli URI data:, negli allegati email e nei token web come i JWT, ovunque sia necessario far viaggiare dati binari attraverso un sistema progettato per il testo.

La conversione tra queste codifiche non modifica mai il numero sottostante. Cambia solo il numero di caratteri necessari per scriverlo e i sistemi attraverso i quali quel testo può essere trasmesso senza problemi.

Domande frequenti

Qual è la differenza tra Base16, Base32 e Base64? Differiscono per il numero di simboli che ogni carattere può rappresentare: 16, 32 o 64. Un maggior numero di simboli per carattere produce una stringa codificata più breve per lo stesso numero, a fronte di un alfabeto più ampio.

Perché 1000 viene codificato come 03E8 invece di 3E8 in Base16? L'output esadecimale viene completato fino a un numero intero di byte, con due cifre esadecimali per byte. 1000 richiede due byte, quindi il risultato ha sempre quattro cifre esadecimali, anche se la cifra iniziale è zero.

Base32 non distingue tra maiuscole e minuscole? L'alfabeto Base32 è definito con lettere maiuscole. Il decodificatore di questo strumento accetta solo input Base32 in maiuscolo; le lettere minuscole producono un errore.

Qual è il numero più grande che il convertitore può gestire? 9,007,199,254,740,991, che equivale a 2^53 − 1. Questo è il limite della precisione intera esatta in JavaScript, il linguaggio in cui viene eseguito lo strumento.

È possibile convertire un numero negativo? No. Lo strumento accetta solo numeri interi pari o superiori a zero.

Perché lo strumento rifiuta alcune stringhe che sembrano Base64 valide? Base64 viene scritto in gruppi di 4 caratteri, quindi un valore la cui lunghezza è maggiore di un multiplo di 4 di 1 carattere non codifica alcun byte completo. Nessun codificatore può produrlo, quindi lo strumento segnala un errore invece di restituire un numero.

La conversione di un numero tra basi ne modifica il valore? No. Cambia solo la forma scritta. 255, FF, 74====== e /w== rappresentano tutti lo stesso numero.