OK, grazie per il consiglio, con che metodo mi consigli di ricavare i dati dagli array di byte?
OK, grazie per il consiglio, con che metodo mi consigli di ricavare i dati dagli array di byte?
Se si tratta di un "bit set" (ovvero N byte di cui consideri i singoli bit come dei flag a sé stanti), ci sono diverse possibilità. Esiste la classe java.util.BitSet che da Java 7 è anche facile da creare partendo da un byte[] (prima di Java 7, no, non c'era questa possibilità). Altrimenti c'è sempre la strada fai-da-te: dato l'offset in bit, ricavi l'offset del byte e la maschera del bit usando gli operatori di shift e bitwise di Java.
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
Ma prendere singoli byte dall'array non è certo un problema ... la sintassi la conosci già (non credo devo spiegarla, giusto?), è array[indice] , sapendo anche che indice è 0-based.
Se invece vuoi gestire un bit-set, per esempio, dato un array:
byte[] arr = { 0, 0, 1, 6, 0, 0 };
Se a te serve "vedere" come un bit-set i due byte agli indici 2 e 3 che ho segnato in rosso, allora da Java 7 puoi fare:
BitSet bitSet = BitSet.valueOf(Arrays.copyOfRange(arr, 2, 4));
oppure
BitSet bitSet = BitSet.valueOf(ByteBuffer.wrap(arr, 2, 2));
La principale differenza è che copyOfRange crea un nuovo array mentre wrap di ByteBuffer incapsula l'array e ne permette l'accesso "attraverso" ByteBuffer.
Poi:
codice:System.out.println(bitSet.get(0)); // true System.out.println(bitSet.get(9)); // true System.out.println(bitSet.get(10)); // true
I 3 true stampati sono relativi ai 3 bit a '1' che ci sono nel bit-set { 1, 6 }
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
Scusami, ma in quel momento non conoscevo la sintassi..
Alla fine sono riuscito ad avere i risultati di tutti gli Stati che mi interessavano.
Ora vorrei creare un xml trasportandoci tutti i dati ricavati, però non so come fare, cosa mi consigli?
Inoltre se al XML gli invio i dati ogni 10 secondi, lui aggiorna le voci automaticamente?
Grazie