Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    OK, grazie per il consiglio, con che metodo mi consigli di ricavare i dati dagli array di byte?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da gesatecnico Visualizza il messaggio
    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 developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    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 scusami per l'ignoranza, ma non riuscito a capire in che modo usare la classe bitset per estrapolare i dati che mi occorrono, cioè come dire dammi il byte n. 14, e gli ultimi 8.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da gesatecnico Visualizza il messaggio
    cioè come dire dammi il byte n. 14, e gli ultimi 8.
    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 developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.