I have a .bin file(0's and 1's). I want to read 2 bits of information at a time from that file. How do I do it ?

5 visualizzazioni (ultimi 30 giorni)
Explanation of the problem :
Suppose I have the binary text as: " 010010001100101011001"
I want to read " 01 " first and then I want to read " 00 " and so on till I read all the data. How do I do it ?
My code:
fileID = fopen("newencryptedmsg.bin");
A = fread(fileID,[1,2],"uint8");
disp(A)
fclose(fileID);
I've written this code but it's giving me the wrong output.
Expeceted Output : 01
Output of my code : 49 48
Can you please help me with this. Thank you.
  2 Commenti
OKo
OKo il 9 Ago 2022
fileID = fopen("newencryptedmsg.bin");
A = fread(fileID,[1,2],"uint8") == '1';
disp(A)
fclose(fileID);
Your file is ASCII, so you have to compare your data with chars '1'/'0'

Accedi per commentare.

Risposte (2)

Atsushi Ueno
Atsushi Ueno il 9 Ago 2022
Modificato: Atsushi Ueno il 9 Ago 2022
Reproduce the problem:
fileID = fopen('newencryptedmsg.bin','w');
fwrite(fileID,'010010001100101011001');
fclose(fileID);
type newencryptedmsg.bin % It's binary file, but it looks like ASCII file.
010010001100101011001
fileID = fopen("newencryptedmsg.bin");
A = fread(fileID,[1,2],"uint8");
disp(A)
48 49
fclose(fileID);
Correct the problem:
fileID = fopen('newencryptedmsg.bin','w');
fwrite(fileID,[0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 1]');
fclose(fileID);
type newencryptedmsg.bin
Āā𐀁ā�
fileID = fopen("newencryptedmsg.bin");
A = fread(fileID,[1,2],"uint8");
disp(A)
0 1
fclose(fileID);
fileID = fopen("newencryptedmsg.bin");
A = fread(fileID,"uint8")' % just remove [1,2]
A = 1×21
0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 1
fclose(fileID);
  3 Commenti
Vaibav Reddy
Vaibav Reddy il 9 Ago 2022
Ok when I'm trying to copy paste the text that was shown, it's not visible here. But what I can say it's some wierd looking text more like an encrypted text.

Accedi per commentare.


Atsushi Ueno
Atsushi Ueno il 9 Ago 2022
Thank you. Now I understand what you mean. I will revise my answer.
fileID = fopen('newencryptedmsg.bin','w');
fwrite(fileID,'Z'); % the contents is 0x5A (01011010b)
fclose(fileID);
fileID = fopen("newencryptedmsg.bin");
A = fread(fileID,2,'ubit1=>uint8');
disp(A)
0 1
fclose(fileID);

Categorie

Scopri di più su Data Import and Export 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