You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

凯撒密码解码异常:ASCII字符|无法转换为z的问题求助

凯撒密码解码z变为|的问题修复

问题根源

US-ASCII编码中,小写字母z的ASCII值是122,|是124。出现该错误是因为你的解码逻辑未正确处理字母边界循环:当反向偏移(解码)时,若计算后的ASCII值超出字母范围(小写97-122、大写65-90),没有回绕到字母区间的另一端,而是直接转换为了对应ASCII符号。

修正后的解码代码

下面是处理边界循环的Java解码实现,同时兼容德语文本的大小写:

public static String decodeCaesar(String encryptedText, int shift) {
    StringBuilder result = new StringBuilder();
    // 确保偏移量在0-25区间,避免无效计算
    shift = shift % 26;
    if (shift < 0) {
        shift += 26;
    }

    for (char c : encryptedText.toCharArray()) {
        if (Character.isLowerCase(c)) {
            // 基于字母索引计算,模运算实现回绕
            int originalPos = c - 'a';
            int newPos = (originalPos - shift + 26) % 26; // 加26避免负数
            result.append((char) ('a' + newPos));
        } else if (Character.isUpperCase(c)) {
            int originalPos = c - 'A';
            int newPos = (originalPos - shift + 26) % 26;
            result.append((char) ('A' + newPos));
        } else {
            // 非字母字符直接保留(适配德语中的特殊符号)
            result.append(c);
        }
    }
    return result.toString();
}

关键修复点

  1. 边界回绕处理:通过(originalPos - shift + 26) % 26确保计算结果落在0-25的字母索引范围内,再转换为对应字母,避免出现非字母符号。
  2. 偏移量标准化:先对偏移量取模26,再处理负偏移,保证偏移逻辑的正确性。
  3. 大小写区分:单独处理大小写字母,适配德语文本的格式规范。

配套加密逻辑(避免源头错误)

如果你的加密代码也存在边界溢出问题,建议同步使用以下实现,确保加密和解码逻辑统一:

public static String encodeCaesar(String plainText, int shift) {
    StringBuilder result = new StringBuilder();
    shift = shift % 26;
    if (shift < 0) {
        shift += 26;
    }

    for (char c : plainText.toCharArray()) {
        if (Character.isLowerCase(c)) {
            int originalPos = c - 'a';
            int newPos = (originalPos + shift) % 26;
            result.append((char) ('a' + newPos));
        } else if (Character.isUpperCase(c)) {
            int originalPos = c - 'A';
            int newPos = (originalPos + shift) % 26;
            result.append((char) ('A' + newPos));
        } else {
            result.append(c);
        }
    }
    return result.toString();
}

内容的提问来源于stack exchange,提问作者dxrkii_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:26:12