在加密程序中从Z更改为A.

时间:2011-04-15 15:57:48

标签: java encryption ascii

我正在用Java编写加密程序,我需要将输入字符串更改为某个值。当我到达Z并且需要将其更改为A而不是ASCII代码中的下一个字符时,我遇到了问题。我如何将它从Z改为A?我知道我还需要更改它被加密的值,但是我在如何将ASCII中的Z更改为A上的空白。

4 个答案:

答案 0 :(得分:5)

假设您要将所有字母移至n

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

要解码:

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

答案 1 :(得分:2)

不确定为什么使用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';

答案 2 :(得分:0)

正如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());

答案 3 :(得分:0)

如果有这个诀窍,请告诉我:

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;
}