Ho una maschera di bit da memorizzare in un byte, poiché ho solo bisogno di 8 bit. Quando sto creando lo faccio come una stringa (ho pensato che sarebbe stato più facile in questo modo) e poi mi trasformo in un byte con Byte.parseByte(mask,2)
, ma ho trovato non funziona per certi valori:Perché Byte.parseByte ("10000001", 2) genera un NFE?
String bits="10000001";
Byte.parseByte(bits,2);// throws a NFE
Ma se faccio:
byte b=(byte)0x81; //1000 0001
non c'è nessun problema.
PS: Ho trovato una soluzione, byte b=(byte)Integer.parseInt(bits, 2);
ma in ogni caso io voglio sapere perché non riesco a convertire 8 bit in un byte
Risposta breve: perché 'byte' è firmato. –
Sì, lo so, il primo 1 dice che è un numero negativo. Il mio punto è che non dovrebbe essere un problema. Come posso memorizzare -127 quindi, se sto ricevendo una stringa? –