Se converto un carattere in byte
e poi di nuovo in char
, quel personaggio scompare misteriosamente e diventa qualcos'altro. Com'è possibile?Conversione byte e caratteri in Java
Questo è il codice:
char a = 'È'; // line 1
byte b = (byte)a; // line 2
char c = (char)b; // line 3
System.out.println((char)c + " " + (int)c);
Fino linea 2 è tutto a posto:
In linea 1 ho potuto stampare "a" nella console e sarebbe mostrare "E".
Nella riga 2 potrei stampare "b" nella console e mostrerebbe -56, ovvero 200 perché il byte è firmato. E 200 è "È". Quindi va ancora bene.
Ma cosa c'è che non va nella riga 3? "c" diventa qualcos'altro e il programma stampa ? 65480
. È qualcosa di completamente diverso.
Cosa dovrei scrivere nella riga 3 per ottenere il risultato corretto?
Un 'byte' è' 8 bit'.'char' è' 16 bit'. Hai l'idea? –
char occupa 2 byte. – Ankit
@RohitJain E un carattere, con cui intendo un punto di codice Unicode, può assumere due caratteri o quattro byte. Inoltre, chi sa in quale forma di normalizzazione si trovano le cose? La stringa '" È "' può comprendere a sua volta uno o due punti di codice a seconda che sia in Normalization Form C o D rispettivamente. – tchrist