Skipping bytes in binary file
11 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I have a binary file with the following values. The first 4 are each 2 bytes and double precision. The following are pairs of values of double precision. The bytes are unknown for the pair that follows. How can I use fread to skip the first 4 values (8 bytes) and extract the pairs?
1
2
3
4
1 2 4
2 2 5
4 4 4
2 Commenti
Jan
il 29 Dic 2022
"The first 4 are each 2 bytes and double precision." - Double precision means 8 bytes per value.
"The following are pairs of values of double precision." - Which pairs? I see triples.
Risposta accettata
Voss
il 29 Dic 2022
You can just fread the appropriate number of bytes (i.e., the amount you want to skip). For example:
% read 4 double-precision numbers (32 bytes), and don't store the result
fread(fid,4,'double');
Or you can use fseek to move the file position indicator forward by the appropriate amount:
% move 32 bytes forward, effectively skipping those bytes
fseek(fid,32,'cof')
The next fread call reads from where fseek placed the file position indicator.
2 Commenti
Walter Roberson
il 30 Dic 2022
triples = fread(fid, [3 NUMBER_OF_TRIPLES], 'uint8=>double') .';
Use inf for NUMBER_OF_TRIPLES if you want to read to end of file.
Each row of triples will be 3 entries, converted to double precision already -- ready for you to do calculations such as
triples(:,2) * 2^16 + triples(:,1) * 2^8 + triples(:,3)
or as appropriate depending what byte order is used for the triples.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Low-Level File I/O in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!