Decodifica file binario

di il
5 risposte

Decodifica file binario

Salve ragazzi,
avrei bisogno di una mano per trasformare un file da binario ad ASCII.
Ogni record del file è configurato in questo modo:

Sample number: 4 bytes
Sample time: 4 bytes
valore canale analogico: 2 byte (il numero di questo valore è variabile ma conosciuto)
valore canale digitale: 2 bytes (il numero di questo valore è variabile ma conosciuto)

L'ultimo valore del record è sempre <CR/LF>

ES record file .dat formato ASCII con 2 valori analogici e 2 digitali:

1,0.001,-720,1274,0,1<CR/LF>

Giusto per farvelo sapere si tratta di un file .dat per il COMTRADE

grazie in anticipo a chi risponderà.

5 Risposte

  • Re: Decodifica file binario

    Ordine dei byte? Big o Little endian?
  • Re: Decodifica file binario

    Little endian..grazie
  • Re: Decodifica file binario

    Un lettore di COMTRADE formato dat lo trovi quà:
    http://www.pqsoft.com/top

    Mi pare che sia in grado di trasformarlo in ASCII. Di più non chiedermi perché non è la mia materia.
  • Re: Decodifica file binario

    In realtà il fatto che si tratti di file per il COMTRADE è un'informazione in più che ho voluto dare io, ma la lettura di file binari penso possa riguardare anche altri campi..comunque grazie lo stesso.
  • Re: Decodifica file binario

    La lettura dei file binari non è nient'altro che un fread ma come rappresentarli nel tuo formato che le cose cambiano. Io vedo un double come 2 valore e in binario non si possono salvare dati in virgola mobile. E qui che entra in gioco il formato specificato.
    Cmq per leggere il tuo file non è dificile, il dificile viene interprettarlo.
    
    BYTE byte[4];
    fread(byte,1,4,fp);
    
    una volta che ho i 4 byte sul buffer li posso estrappolare per formare un valore intero.
    
    int val = ((byte[0]<<24)|(byte[1]<<16)|(byte[2]<<8)|(byte[3]));
    
Devi accedere o registrarti per scrivere nel forum
5 risposte