Need to utilise only letter ASCII in Caesar Cipher Code

4 views (last 30 days)
Hello,
I am currently creating a Caesar cipher code and need help, please:
  1. A caesar code reverses letter order and capitalisation.
I have written a short code below, which performs the shift correctly, however, I am unsure how to reverse capitalisation, and only edit the letters.
function [out_str] = str_edit(in_str, shift)
char_set = char(32):char(126);
[out_str] = char(in_str+shift);
end

Answers (1)

Walter Roberson
Walter Roberson on 11 Sep 2022
Hint:
T('A':'Z') = circshift('a':'z', count)
encoded = T(msg)
  2 Comments
Bozza
Bozza on 13 Sep 2022
Thanks for helping. I'm quite unfamiliar with Matlab, so I am unsure how to implement this into my code?
Walter Roberson
Walter Roberson on 13 Sep 2022
Example:
T = char(1):char(255);
T('A':'C') = 'bca';
T('a':'c') = 'BCA';
msg = 'Call a cab!'
msg = 'Call a cab!'
T(msg)
ans = 'aBll B ABC!'
What was uppercase A to C become lower-case and also shifted by 1. What was lowercase a to c become upper-case and also shifted by 1. Things outside of A B C a b c are not affected.
If you calculate the replacement vector based upon your shift count, then the indexing of T with the msg does all of the case changing and shifting at the same time, without any need of a for loop.

Sign in to comment.

Categories

Find more on Just for fun 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!