View Full Version : [C++ .NET] convertire endian di un file
graffio83
10-10-2011, 19:41
Salve a tutti
ecco il problema
FILE *mioFile;
fopen("miofile.bin,rb);
fread(ecc ecc
Il fatto è che il file binario è un Big endian e la mia macchina (Intel) è little endian
come posso convertire il file
ho trovato 1000 modi per convertire un byte...
ma un intero file? :muro:
grazie :D
tomminno
10-10-2011, 23:24
L'endianess non influisce sull'ordine dei bit in un byte.
Per convertirlo devi conoscerne la struttura dati, altrimenti rischi di distruggere i dati durante la conversione.
Ad esempio se il tuo file fosse un UTF-16BE puoi convertire a blocchi di 2 byte alla volta, se invece i tuoi dati fossero custom del tipo 2byte-4byte-2byte devi convertire ogni singolo blocco a seconda della sua dimensione, ovvero non puoi trattarli come se fossero 2 campi da 4byte.
graffio83
11-10-2011, 08:28
sono blocchi di due byte alla volta...
tomminno
11-10-2011, 09:56
sono blocchi di due byte alla volta...
Quindi la procedura è:
leggere un blocco di dati (al limite anche tutto il file)
convertire l'endianess a blocchi di 2 byte alla volta
salvare su file
graffio83
11-10-2011, 10:25
in pratica apro un file con un immagine, .bin
è a 16bit la metto in un vettore Unsigned short int
per quello che mi hanno comunicato è a blocchi di 2 byte ma non devo salvarla su file, mi basta tenerla in un vettore convertita
graffio83
11-10-2011, 20:23
Nessuno???
tomminno
12-10-2011, 08:40
Nessuno???
Ma qual è il tuo problema?
La procedura per convertire il file è quella che ti ho indicato.
Cosa ti manca?
La conversione dell'endianess?
graffio83
12-10-2011, 09:20
esatto, non riesco proprio a capir dove metter mano...
neanche se va fatto prima o dopo l'fread, quindi se farlo direttamente sul vettore letto e sul file prima della lettura...
sono nuovo dell'ambiente, molto molto nuovo :(
sorry
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.