# Pad a character array with n zeros

102 views (last 30 days)
Michael on 3 Feb 2012
I know there are formatting tools to pad a certain number of zeros to a number when printing it -- I may be able to use that in some way. But my situation is this: I have binary strings encoded as character arrays: '101010101', etc. I need to have the bit strings to be of a certain length. For example, if that length was 10, '101' would need seven zeros padded on the front: '0000000101', and '111111111' would need one zero padded on the front: '0111111111'.
Is there a quick way where I can have that number of zeros needed (10-numel(num)) padded on the front?
PS - I love the de2bi function where you can specify the number of bits but I am creating really long bit strings and that function only works for numbers less than 2^53-1.

Walter Roberson on 3 Feb 2012
>> sprintf('%010s', '101')
ans =
0000000101
This is a little obscure but works just fine.
Alternately,
S = '101';
[repmat('0', 1, 10 - length(S)], S]

Show 1 older comment
Sean de Wolski on 3 Feb 2012
@Michael:
n = 15;
x = '101'
sprintf(sprintf('%%0%is',n),x)
Walter Roberson on 3 Feb 2012
n = 15;
x = '101';
sprintf('%0*s', n, x)
Sean de Wolski on 3 Feb 2012
Learn something new every day (hour).

Sean de Wolski on 3 Feb 2012
sprintf('%010s','11');
To pad a cell array of string:
C = {'010';'1';'0111';'01010101'};
D = cellfun(@(x)sprintf('%010s',x),C,'uni',false);