|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2009
Messaggi: 6
|
[JAVA] leggere singoli bit di un byte
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 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
|
Googlando ho trovato:
Codice:
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;
}
__________________
iMac 27" 5K |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Oct 2009
Messaggi: 6
|
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! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:13.



















