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

凯撒密码原理及ASCII转换代码输入无返回问题求助

凯撒密码工作原理

凯撒密码是种简单的替换加密手段,核心逻辑就是给每个字母按固定位数在字母表里偏移。比如偏移3位的话,A会变成D,B变成E……X变A,Y变B,Z变C,小写字母规则同理,非字母的字符一般直接保留原样。

你的代码问题修复

先捋下你代码里的几个明显问题:

  • HTML里按钮没加id="button",导致JS里getElementById("button")找不到元素;输入框ID是id1,不是你JS里写的input;按钮绑定的onclick="myFunction()"和JS里给button.onclick赋值的逻辑冲突。
  • 你一开始就获取了input.value,这时候页面刚加载,输入框是空的,应该在点击按钮的时候再去拿输入值。
  • JS里的input2根本没定义,而且charCodeAt()需要传索引(比如0,因为你输入框限制了最多1个字符),它直接返回数值,不用加.value。
  • 结果要显示到id="demo"的p标签里,不是去修改输入框的innerHTML。

修复后的完整代码:

HTML部分

<h1>ASCII</h1>
<button id="button" type="button" class="btn btn-dark">Coding</button>
<div class="input-group input-group-sm mb-3">
  <span class="input-group-text" id="inputGroup-sizing-sm">Say it</span>
  <input id="id1" type="text" class="form-control" name="text1" maxLength="1">
</div>
<p id="demo" style="color:red;"></p>

JavaScript部分

const button = document.getElementById("button");
const input = document.getElementById("id1");
const demo = document.getElementById("demo");

button.onclick = function() {
  const inputChar = input.value.trim();
  if (inputChar) {
    const charCode = inputChar.charCodeAt(0);
    demo.textContent = `字符的ASCII码是:${charCode}`;
  } else {
    demo.textContent = "请输入一个字符";
  }
};
凯撒密码实现思路(供你作业参考)

如果要基于这个ASCII功能做凯撒密码,可以按这个逻辑来:

  1. 先获取输入的文本(可以支持多字符)和偏移量(比如让用户输入偏移几位)。
  2. 遍历每个字符:
    • 要是大写字母(ASCII范围65-90):用(charCode - 65 + 偏移量) % 26 + 65计算偏移后的ASCII码,自动处理循环(比如Z偏移1位变成A)。
    • 要是小写字母(ASCII范围97-122):类似,用(charCode - 97 + 偏移量) % 26 + 97。
    • 非字母字符直接保留。
  3. 把处理后的字符拼接起来,显示成最终加密后的文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 02:15:50