在加密程序中从Z变为A



我正在用Java编写一个加密程序,其中我需要将输入字符串更改为某个值。我有一个问题,当我得到的Z,需要把它变成一个a,而不是下一个字符在ASCII码。怎么把Z变成A呢?我知道我还需要改变它正在加密的值,但我对如何将Z更改为ASCII中的a一无所知。

假设您想通过n:

移动所有字母
((letter - 'A' + n) % 26) + 'A'

和解码:

((letter - 'A' + 26 - n) % 26) + 'A'

不确定为什么使用ASCII。只需使用char

char ch = ...
if (ch >= 'A' && ch < 'Z') ch++;
else if (ch == 'Z') ch = 'A';
else if (ch >= 'a' && ch < 'z') ch++;
else if (ch == 'z') ch = 'z';

正如sverre指出的:

    String s = "AGJAJAJMLVJHNJAFVZVZJADFYAQ";
    StringBuffer e = new StringBuffer();
    char[] cs = s.toCharArray();
    for (int i = 0; i < cs.length; i++) {
        e.append((char)('A' + (cs[i] - 'A' + 1) % 26));
    }
    System.out.println(s);
    System.out.println(e.toString());

让我知道这是否奏效:

public String encode(String str) {
      String res = new String();
      for (char c : str) {
           if (Character.isUpperCase(c))
               (c == 'Z') ? res.append('A') : res.append(c+1);
           else throw new Exception(c + " is not a A-Z character");
      }
      return res;
}

相关内容

  • 没有找到相关文章

最新更新