Convertitore da testo a binario

Traduci il testo in binario — i suoi byte UTF-8, otto cifre ciascuno — e il binario di nuovo in testo, con riga e colonna di un carattere fuori posto.

Input
Output
01000011 01101001 01100001 01101111

Come un testo diventa uni e zeri

Un computer conserva il testo come byte, e un byte è fatto di otto bit, ognuno dei quali vale 0 o 1. Questa pagina ti mostra quei byte: scrivi un testo e ogni byte esce come otto cifre binarie, con uno spazio tra un byte e il successivo, oppure incolla del binario e leggi il testo che compone. Funziona in entrambe le direzioni, gira interamente nel tuo browser e si apre su un esempio già convertito.

Di quali byte sia fatto un testo dipende dalla sua codifica, e qui è UTF-8, a meno che tu non ne scelga un’altra, perché UTF-8 è ciò che contengono le pagine web, gli URL e la maggior parte dei file di testo. Il selettore «Unità» decide che cosa rappresenta un gruppo di cifre: un byte di UTF-8, un byte di UTF-16 in uno dei due ordini dei byte, oppure un punto di codice. L’unità che scegli vale in entrambe le direzioni, e la pagina non la cambia mai al posto tuo. Quando ciò che incolli sembra un’altra unità, la pagina lo dice e mette un pulsante accanto all’avviso, e nulla cambia finché non lo premi.

Perché ogni byte si scrive con otto cifre

Un bit è una cifra binaria, e un byte ne contiene otto. Otto bit si possono combinare in 256 modi, quindi un byte contiene un numero intero da 0, cioè 00000000, a 255, cioè 11111111. È in byte che si contano file, memoria e reti, e su qualunque macchina che probabilmente incontrerai, un byte è di otto bit; gli standard di rete lo chiamano ottetto, una parola che può voler dire soltanto otto.

I primi 128 di questi valori sono l’ASCII, il codice delle lettere dell’alfabeto inglese, delle cifre e della punteggiatura comune, e a 128 valori bastano sette bit. Così il byte di ogni carattere ASCII inizia con uno 0, e UTF-8 riserva i byte che iniziano con un 1 a tutto ciò che l’ASCII non ha. La pagina scrive ogni byte con tutte e otto le cifre, zeri iniziali compresi, e c’è una ragione pratica in più: byte di una larghezza fissa si possono rileggere senza spazi tra di loro, otto cifre alla volta.

La lettera H, bit per bit

Prendi una H maiuscola. L’ASCII le assegna il numero 72, e 72 come byte è 01001000. Lette da sinistra, le otto posizioni valgono 128, 64, 32, 16, 8, 4, 2 e 1, e ogni 1 conta il valore della sua posizione: questo byte ha gli 1 nelle posizioni che valgono 64 e 8, e 64 e 8 fanno 72. Una i minuscola è 105, cioè 64, 32, 8 e 1, quindi Hi diventa 01001000 01101001.

Tra maiuscola e minuscola c’è un bit. Una h minuscola è 01101000, il byte di H con la posizione che vale 32 portata a 1, e lo stesso vale per ogni lettera dell’alfabeto inglese, perché l’ASCII numera ogni lettera minuscola esattamente 32 sopra la sua maiuscola.

Il selettore «Base» scrive lo stesso byte in altri modi senza cambiarlo. Con «Decimale», H è 72; con «Esadecimale», 48; con «Ottale», 110. È uno stesso byte scritto in quattro modi, e la lettura riprende le cifre in qualunque base tu abbia scelto. Il Convertitore da testo a esadecimale si apre su «Esadecimale», dove un byte prende due cifre anziché otto.

Perché una lettera oltre l’ASCII prende due byte o più

L’ASCII finisce a 127. Una lettera accentata, una lettera dell’alfabeto cirillico, ebraico o arabo, un carattere giapponese o coreano e un emoji hanno tutti punti di codice oltre quel valore, e UTF-8 scrive un carattere in un singolo byte soltanto quando è ASCII, riservando i byte che iniziano con un 1 a tutto il resto. Così ognuno di questi prende due, tre o quattro byte, ed è in binario che puoi vederlo accadere, perché i primi bit di ogni byte dicono quale parte di un carattere sia quel byte:

  • 0xxxxxxx è un carattere in un byte: l’ASCII, con i suoi sette bit scritti al posto delle x. H è 01001000.
  • 110xxxxx 10xxxxxx è un carattere in due byte, per i punti di codice fino a 2047, un intervallo che comprende le lettere accentate delle lingue europee e gli alfabeti cirillico, ebraico e arabo. é si scrive 11000011 10101001 e א 11010111 10010000.
  • 1110xxxx 10xxxxxx 10xxxxxx sono tre byte, per i punti di codice fino a 65.535, dove si trovano i kana giapponesi e i kanji di uso comune, l’hangul coreano e il simbolo dell’euro. € si scrive 11100010 10000010 10101100.
  • 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx sono quattro byte, per ogni punto di codice oltre quello, ed è lì che si trova la maggior parte degli emoji.

Un primo byte che inizia con due, tre o quattro 1 dice quanti byte ha il suo carattere, e ogni byte che continua un carattere inizia con 10, così nessun byte preso a metà di un carattere può essere scambiato per l’inizio di un carattere. Togli dai due byte di א i marcatori, il 110 e il 10, e gli undici bit che restano, 10111010000, sono il suo punto di codice, U+05D0, in binario. Con «Esadecimale» gli stessi due byte si leggono D7 90, e lo schema si fonde nelle cifre; in binario sta nei primi bit di ogni byte.

Quattro byte per un emoji

😀 è U+1F600, ben oltre 65.535, quindi UTF-8 lo scrive in quattro byte: 11110000 10011111 10011000 10000000. Il primo inizia con quattro 1, quindi apre un carattere di quattro byte, e ciascuno dei tre che lo seguono inizia con 10. Il suo punto di codice occupa diciassette cifre binarie, 11111011000000000, una in più delle sedici per cui un carattere di tre byte ha posto; lo schema a quattro byte ha posto per ventuno.

Un emoji che sembra un unico simbolo può essere fatto di più punti di codice, e ciascuno viene scritto per intero. Una mano che saluta con una tonalità della pelle corrisponde a due punti di codice e otto byte. Una famiglia di quattro persone corrisponde a sette punti di codice, le quattro persone e i tre congiuntori invisibili tra loro, e a venticinque byte. Incollane uno nella pagina e conta i gruppi.

Perché un altro convertitore stampa undici cifre per א

Un convertitore che stampa undici cifre per א, 10111010000, non ne ha scritto i byte. Ha scritto il numero che Unicode assegna alla lettera, il suo punto di codice U+05D0, cioè 1488, come un unico numero binario, e quel numero non è un byte di nulla che un file o una rete contengano. Un messaggio scritto così può essere riletto solo da un lettore che faccia la stessa supposizione.

Le due risposte sono più vicine di quanto sembri. Le undici cifre sono esattamente i bit che UTF-8 distribuisce sui suoi due byte una volta tolti i marcatori, come mostrato più sopra, quindi entrambi i convertitori scrivono lo stesso numero, e solo uno dei due scrive i byte che lo memorizzano. Su un carattere ASCII i due coincidono a parte gli zeri iniziali, ed è per questo che danno la stessa risposta per l’inglese semplice e si separano su quasi tutto il resto.

La stessa risposta la dà questa pagina, come un’unità che scegli tu e non come una che la pagina dà per scontata: scegli «Punti di codice» e א si scrive 10111010000, e si rilegge allo stesso modo. Incolla, mentre è scelto UTF-8, un messaggio che un convertitore di punti di codice ha scritto in ebraico, russo o giapponese, e i gruppi sono troppo larghi per essere byte; la pagina non indovina, ma dice che i gruppi sembrano punti di codice e offre «Passa ai punti di codice». Un convertitore che elabora un’unità di codice UTF-16 alla volta, come fa charCodeAt di JavaScript, scrive 😀 come due numeri di sedici cifre, le due metà della coppia surrogata in cui UTF-16 lo memorizza, e «Punti di codice» rilegge la coppia come un unico emoji.

Rileggere il binario come testo

Per tornare dal binario al testo, imposta la direzione su «Da binario a testo» e scrivi o incolla le cifre: l’output è il testo che compongono. «Usa come input» lo fa con un clic, spostando l’output nell’input e invertendo la direzione, ed è il modo più rapido per verificare un’andata e ritorno. Tutte queste forme vengono lette come gli stessi byte:

  • Caratteri di spaziatura di ogni tipo, a capo compresi, e virgole, punti e virgola, due punti o trattini tra i byte.
  • Nessun separatore, ovunque le cifre si dividano in byte interi da otto: è così che le scrive «Compatto» sotto «Stile».
  • Gruppi di sette cifre o meno, l’aspetto che ha un carattere ASCII a cui è caduto lo zero iniziale: 1001000 1101001 si legge Hi.
  • Uno 0b davanti a un byte, in maiuscolo o in minuscolo, e una coppia di parentesi quadre, graffe o tonde, o di virgolette, attorno al tutto.

La pagina, però, non tira a indovinare. Qualunque altro carattere, o un gruppo più lungo di otto cifre che non si divide in byte interi, ferma la lettura, e la pagina lo dice indicando la riga e la colonna in cui si trova, con la tua riga mostrata sotto e il punto segnato. In un messaggio lungo, è la differenza tra un errore di battitura che puoi trovare e un testo sbagliato senza che nulla lo dica.

Il binario che si legge correttamente come byte ma non è testo UTF-8 viene mostrato anziché rifiutato. Un messaggio troncato a metà di un carattere torna con la sequenza spezzata mostrata come U+FFFD, il carattere sostitutivo, e un avviso sotto l’output dice quante sequenze del genere ci sono e dove inizia la prima: il byte, le cifre che hai incollato per esso, e la loro riga e colonna.

Il binario di un testo e il binario di un numero

Scrivi 5 qui e la risposta è 00110101, non 101. La pagina scrive il carattere 5, a cui l’ASCII dà il numero 53, perché le cifre di un testo sono i byte che lo memorizzano; 101 è il numero cinque scritto in binario: un’altra domanda, con un’altra risposta. Lo stesso vale per 255: scritto qui, sono tre caratteri e tre byte, mentre il numero 255 è un singolo byte, 11111111.

Quando ciò che hai è un numero anziché un testo, come un conteggio, un registro o un valore stampato da un programma, è al Convertitore di basi numeriche che devi portarlo: converte il valore stesso tra binario, ottale, decimale, esadecimale e altre basi, e a larghezza fissa scrive un valore negativo in complemento a due e mostra ogni bit come uno che puoi cliccare per invertirlo. Questa pagina parte dai caratteri di un testo; quella parte da un numero.

Domande frequenti

Come scrivo il mio nome in binario?
Scrivilo nel riquadro di input ed esce un byte alla volta, otto cifre per byte con uno spazio tra un byte e l’altro. Ada, per esempio, è 01000001 01100100 01100001. Una lettera accentata, o una lettera di un altro alfabeto, prende due byte o più, e uno spazio tra due nomi è un byte a sé, 00100000.
Quanti bit prende un carattere?
In UTF-8, otto per una lettera, una cifra o un segno di punteggiatura ASCII, sedici per una lettera accentata o una lettera cirillica, ebraica o araba, ventiquattro per i kana giapponesi, i kanji di uso comune, l’hangul coreano e il simbolo dell’euro, e trentadue per la maggior parte degli emoji. Ciò che vedi come un unico simbolo può essere fatto, sotto, di più punti di codice, e ciascuno prende i propri bit.
Posso incollare del binario senza spazi tra i byte?
Sì, ovunque le cifre si dividano in byte interi: sedici cifre sono due byte e ventiquattro sono tre. Un gruppo più lungo di otto cifre la cui lunghezza non è un multiplo di otto non si può dividere senza indovinare quale byte abbia perso una cifra, quindi viene rifiutato alla sua riga e colonna invece di essere letto in modo sbagliato.
Perché il mio testo torna con un punto interrogativo dentro un rombo?
Quel simbolo è U+FFFD, il carattere sostitutivo, che la pagina mette ovunque i byte non siano testo UTF-8: il più delle volte un byte è andato perso e un carattere è rimasto troncato, oppure i byte non sono mai stati UTF-8. Invece di rifiutare tutto il messaggio, la pagina mostra così ogni sequenza spezzata e dice sotto l’output quante sono e dove inizia la prima, così puoi trovare il danno in ciò che hai incollato.
Perché un altro convertitore mi dà un binario diverso?
Molto probabilmente scrive il punto di codice di ogni carattere anziché i suoi byte. I due coincidono sull’ASCII a parte gli zeri iniziali, e divergono oltre l’ASCII: א è 11010111 10010000 qui e 10111010000 là. Scegli «Punti di codice» per ottenere la risposta di quel convertitore, o per rileggere un messaggio che ha scritto.
Perché qui 5 non è 101?
Perché un 5 scritto nel riquadro è un carattere, e la pagina scrive il byte che lo memorizza, 00110101. Il numero cinque in binario è 101; per un numero anziché un testo, usa il Convertitore di basi numeriche.
Il mio testo viene inviato a un server?
No. Entrambe le direzioni girano interamente nel tuo browser, quindi il testo che scrivi e il binario che incolli non lasciano mai il tuo dispositivo.

Strumenti correlati

  • Convertitore di basi numeriche

    Scrivi 5 in questa pagina e ottieni il byte che memorizza il carattere 5, 00110101. Quella pagina è per un numero anziché per un testo: converte il valore stesso, così cinque diventa 101.

  • Convertitore da testo a esadecimale

    L’esadecimale scrive un byte con due cifre dove il binario ne usa otto — Hi è 01001000 01101001 qui e 48 69 là —, ed è così che un dump mostra i byte e che il codice li scrive. Anche questa pagina offre l’esadecimale; quella si apre su di esso.

  • Base64

    Codifica e decodifica Base64 — supporto UTF-8 completo.

  • Codificatore / decodificatore URL

    Codifica percentuale di un valore o di un URL intero, e viceversa.