MATLAB: Help for setting the formatSpec when reading hexadecimal

dec2hexfreadfscanf

Hello, this is Matthew.
I'm trying to read a file that contains hexadecimal. This is the pattern. Or check the attached file, please.
00b7 17ff 5b3f 1700 c84b 1eff b398 1d00
a577 00ff 15b3 00ff 00b7 17ff 5b3f 1700
c84b 1eff b398 1d00 a577 00ff 15b3 00ff
00b7 17ff 5b3f 1700 6929 1eff b398 1dff
a577 00ff b690 00ff 00b7 1700 5b3f 1700
6929 1eff b398 1dff a577 00ff b690 00ff
So I wrote that
formatSpec = '%04x %04x %04x %04x %04x %04x %04x %04x\n';
fid = fopen(filename, 'r');
hex = fscanf(fid, formatSpec);
sizeHex = length(hex); % the length shows 0
How should I change the format spec to read the hexadecimal correctly?
-Regards, Matthew

Best Answer

That file does not contain hexadecimal. It is a binary file. You can use
data = fread(fid, '*uint16', [1 inf]);
If you want to see the hex equivalent you can
disp(dec2hex(data))
Watch out for byte order questions. The above code will treat the byte stream as being the in-memory byte order, which is "little endian" -- the first byte of the file would be the low byte (least significant) of the uint16. You can add 'ieee-be' to the fopen() to have it treat the first byte of the file as the high byte (most significant) of the uint16.