Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Lettura/Scrittura file Binario

    Ho una serie di file File binari in cui ci sono dei valori di alcuni parametri, io dovrei leggere questi file e avvalorare i parametri corrispondeti. Per la lettura uso questa semplicissimo codice..
    codice:
    try {
    			FileInputStream fis = new FileInputStream(new File("C:\\binFile.BIN"));
    		    Integer c = fis..read();
    		    while (c != -1)
    		    {
    		    	c = fis.read();
    			    System.out.println(c);
    		    }
    		    fis.close();
    		}
    		catch (FileNotFoundException e) {
    			e.printStackTrace();
    		}
    		catch (IOException e) {
    			e.printStackTrace();
    		}
    Io conosco la codifica del file, quindi so' che per esempio che i primi due byte avvalorano 2 parametri distinti. Ma come faccio a recuperare il valore? Cioe', tramite le classi java che leggono i file binari leggo un intero e come faccio a convertirlo nel valore che m'interessa!
    Forse sara' un post stupido, ma e' la prima volta che m'imbatto nei file binari e non so' proprio come gestirli!
    Grazie a tutti!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Lettura/Scrittura file Binario

    Originariamente inviato da rocklife
    Io conosco la codifica del file, quindi so' che per esempio che i primi due byte avvalorano 2 parametri distinti. Ma come faccio a recuperare il valore? Cioe', tramite le classi java che leggono i file binari leggo un intero e come faccio a convertirlo nel valore che m'interessa!
    No alt ... qui dovresti specificare meglio. I byte cosa rappresentano? Più byte compongono un valore che può essere trattato con i tipi primitivi di Java? Per es. sai che ad un certo offset hai 2 byte che compongono un short oppure es. 4 byte che compongono un int??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Allora i primi due parametri del file sono entrambi UINT8 quindi ho dedotto (forse sbagliandomi) che rapprensetano i primi 2 byte del file???

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da rocklife
    Allora i primi due parametri del file sono entrambi UINT8 quindi ho dedotto (forse sbagliandomi) che rapprensetano i primi 2 byte del file???
    Direi anche io così!
    Il primo byte è un valore singolo ... il secondo idem. E quale è il problema? Usi 2 read() ed ottieni 2 int (con valori nel range 0-255, che va benissimo visto che hai parlato di UINT8 ... U appunto unsigned).

    Tutto qui? E poi?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Allora con UINT8 non posso convertirlo in int perche' e' un byte unsigned cmq per quello ho risolto con questo metodo:

    codice:
    public static final int byteToUnsignedByte(byte b) 
    {
        return (int) b & 0xFF;
    }
    adessi ho un problema nel convertire UINT64!!!!! come faccio?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da rocklife
    Allora con UINT8 non posso convertirlo in int perche' e' un byte unsigned
    Forse non hai ben compreso .... intanto dipende da come lo leggi. Se usi read() (quello senza argomenti che restituisce un int) non hai problemi ... hai già il valore unsigned. Se invece hai letto più roba cioè un blocco di dati in un byte[] e quindi hai un byte "crudo" allora sì, devi appunto fare una AND con 0xFF per ottenere il valore del byte come unsigned nel int!!
    Chiaro?

    Originariamente inviato da rocklife
    adessi ho un problema nel convertire UINT64!!!!!
    Vuoi la cattiva notizia? In Java non c'è un tipo primitivo che sia in grado di tenere un valore intero di 64 unsigned. C'è il long che è a 64 bit ma signed!
    Vuoi la buona notizia? Potresti usare un BigInteger. Ma prima sarebbe meglio capire che cosa ci dovrai poi fare con tale valore (es. devi stamparlo in decimale? Farci della "aritmetica"?)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2025 vBulletin Solutions, Inc. All rights reserved.