View Full Version : [JAVA] leggere singoli bit di un byte
lucamax1
17-10-2009, 14:33
Ciao,
avendo un array di byte e prendendo un singolo byte per volta avrei bisogno di verificare il valore di ciascun bit se è 0 o 1.
Come posso fare senza convertire il byte in un char e creare una tabella di conversione che assegni a ciascun char il corrispettivo valore degli 8 bit?
Grazie
Don[ITA]
17-10-2009, 15:11
Googlando ho trovato:
public static boolean[] convertToBits(byte b) {
boolean[] bits = new boolean[8];
for (int i = 0; i < bits.length; i++) {
bits[7 - i] = ((b & (1 << i)) != 0);
}
return bits;
}
Spero ti sia utile :D
lucamax1
17-10-2009, 19:08
Perfetto!
Grazie mille! Non ho sufficiente esperienza degli operatori di bitwise altrimenti la soluzione era davvero semplice.
Ho fatto un pò di ricerche ed ora so qualcosa in più :)
Per chi capitasse in questa discussione,
Cosa fa il metodo:
Prende il byte e fa l'and con il valore 1 di volta in volta shiftato di 1 posizione.
Questa operazione si chiama bit mask operation e serve proprio per verificare se un particolare bit è pari a 0 o 1.
Ad esempio con il numero 15 che in binario è 00001111 fa l'and con 00000001 e restituisce 00000001. Al passo successivo fa l'and con 1 spostato di 1 posizione a sinistra, quindi, 00000010 e dil risultato è 00000010 e così via. Al quinto passo avremo 00001111 AND 00010000 che da come risultato 00000000.
Dopo l'and verifica che il valore ottenuto sia diverso da 0. Se è 0 restituisce false, altrimenti restituisce true. Tali valori booleani vengono messi nell'array di boolean partendo dall'ultima posizione fino alla posizione 0.
Grazie mille Don!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.