Decodifica file binario

di Anonimizzato10042 il
5 risposte
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

  • Ordine dei byte? Big o Little endian?
  • Little endian..grazie
  • 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.
  • 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.
  • 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