|
|
|
![]() |
|
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: 02:51.