Help for setting the formatSpec when reading hexadecimal

6 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Walter Roberson
Walter Roberson il 19 Mar 2018
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.
  3 Commenti
Matthew Kyeo
Matthew Kyeo il 21 Mar 2018
You don't have to apologize! :D
You saved my life. Thanks~
-Regards, Matthew

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Workspace Variables and MAT Files in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by