Reading binary file with fread and typecast

12 views (last 30 days)
I am trying to read a binary file with columns of data in various format (int32,uint32,int16,int64,etc.). As there are many columns of data, I want to speed up my reader by reading the whole file at once in increments of 8 bits and then recovering the various formats using the typecast function.
% Move to start of binary file (header is ascii format of 3759 bytes)
fseek(fid,3759,'bof');
% Read the data file as 8 bit increments (each row has 16660 bytes)
data = uint8(fread(fid,[16660,Inf],'16660*uint8'));
% Attempt to recover first data element of type int32
val1 = data(1:4,1);
val2 = typecast(uint8(val1),'int32');
Running this code I get that
val1 = [0 0 22 229]
val2 = -451543040
Whereas the true value should be 5861. What am I doing wrong?

Accepted Answer

James Tursa
James Tursa on 11 Jul 2017
try
val2 = swapbytes(typecast(uint8(val1),'int32'));

More Answers (0)

Categories

Find more on Numeric Types in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!