read binary text from a file and add zeros to it
Show older comments
Please. I need to read binary text from a file and if it is not a multiple of a certain number, add zeros to te until it becomes a multiple of it,iam do tracing to my code and i discover that the statment a=......... in while loop donot change its value based on the new text,it remain on the first text.
text = fileread('text1.txt');
n=input('enter the length of segment: ');
a=mod(length(text),n);
if a~=0
while a~=0
text=string(text)+"0";
a=mod(length(text),n);
end
end
Accepted Answer
More Answers (2)
Walter Roberson
on 11 Sep 2022
if a~=0
text = [text, repmat('0',1,n-a)];
end
Your bug is that you are converting text to string() array, but length() of a string array is the number of strings in the array, not the number of characters in the entry. See also strlength()
dpb
on 11 Sep 2022
Moved: Image Analyst
on 11 Sep 2022
What's the form of the file -- just a string of 0s and 1s? if so then it would be simply something like
text = fileread('text1.txt');
N=input('enter the length of segment: ');
text=strcat(text,'0',repmat(1,N-strlength(text)));
if N > strlength(text), thanee it will add enough '0' to make up N overall; repmat will silengly do nothing if the repeat count is <=0 so you don't need any other logic outside; it's all handled internally ("magic happens").
fileread returns a char() vector to begin with so there's no conversion required there, either.
3 Comments
Walter Roberson
on 11 Sep 2022
'0' should be inside repmat
Walter Roberson
on 11 Sep 2022
User wants output to be a multiple of N long rather than padding <N to N and leaving >N unchanged
Hadeel
on 11 Sep 2022
Categories
Find more on Data Import and Export 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!