How do I convert a string into its binary equivalent?

I want to convert 2 strings (user_id & password) in binary equivalent and then concatenate these binary string. So that later i can get back both string separately. Both strings are 20 character long each. If less than 20 character then '*' will be appended to the strings.
I wrote this. But it does not work. Please tell me how it can be done?
user_id = 'banerjee.raktim';
password = '123456789';
len_id = length(user_id);
len_pwd = length(password);
if len_id < 20
x = 20 - len_id;
for i = 1:x,
user_id = [ user_id '*'];
end
end
if len_pwd < 20
x = 20 - len_pwd;
for i = 1:x,
password = [password '*'];
end
end
user_id = double(user_id);
user_id = dec2bin(user_id);
save user_id;
password = double(password);
password = dec2bin(password);
save password;
user_id_final = '0';
password_final = '0';
for i = 1:20,
t = user_id(i,:);
len_t = length(t);
diff = 8 - len_t;
for j = 1:diff,
t = ['0' t];
end
user_id_final = [user_id_final t];
end
save user_id_final;
for i = 1:20,
t = password(i,:);
len_t = length(t);
diff = 8 - len_t;
for j = 1:diff,
t = ['0' t];
end
password_final = [password_final t];
end
user_id_final(1) = [];
password_final(1) = [];
watermark= [user_id_final password_final];
save watermark;

 采纳的回答

user_id = 'banerjee.raktim';
password = '123456789';
user_id = [user_id repmat('*',1,20)];
user_id = user_id(1:20);
password = [password repmat('*',1,20)];
password = password(1:20);
userid_final = reshape(dec2bin(user_id,8),1,[]);
password_final = reshape(dec2bin(password,8),1,[]);
watermark = [userid_final password_final];

3 个评论

Thank You a lot Sir!
Trying to convert back again to string. But the following error is generated.
char(bin2dec(watermark))
??? Error using ==> bin2dec
Binary string must be 52 bits or less.
You will have to reshape() the watermark before you bin2dec it.
Also, I just noticed a correction to make my code match yours:
userid_final = reshape(dec2bin(user_id,8).',1,[]);
password_final = reshape(dec2bin(password,8).',1,[]);
Each of the dec2bin would produce a 20x8 bit matrix, and the original reshape would have flattened that along the *columns*, whereas your code had them flattened along the *rows. The .' (transpose) that I show in this comment will cause my version to be flattened along the rows like yours was.
The implication is that you should
char(bin2dec(reshape(watermark, 8, []).'))

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Data Type Conversion 的更多信息

产品

标签

Community Treasure Hunt

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

Start Hunting!

Translated by