凯撒密码实现求助:如何将移位后的ASCII整数转换为字符
解决凯撒密码中ASCII值转字符的问题
嘿,我来帮你搞定这个转换问题!你已经完成了最核心的移位计算,现在只需要把移位后的ASCII数值强制转换为char类型,再拼接成最终的加密字符串就可以了。
修正后的完整代码
private void button1_Click(object sender, EventArgs e) { string input = textBox1.Text; int shift = int.Parse(textBox2.Text); string result = string.Empty; // 用来存储最终加密后的字符串 foreach (char c in input) { // 获取当前字符的ASCII值,进行移位 int shiftedAscii = (int)c + shift; // 把移位后的ASCII值转回字符,添加到结果中 result += (char)shiftedAscii; } // 把加密后的字符串显示到TextBox3 textBox3.Text = result; }
关键说明
- 类型转换:用
(char)将int类型的ASCII值强制转换为对应的字符,这是你缺失的核心步骤。 - 优化建议:上面的代码是基础实现,实际使用中建议处理字母边界(比如大写字母Z移位后应该回到A,小写z回到a),避免出现非打印字符。比如可以加个判断:
if (char.IsUpper(c)) { shiftedAscii = ((c - 'A' + shift) % 26) + 'A'; } else if (char.IsLower(c)) { shiftedAscii = ((c - 'a' + shift) % 26) + 'a'; } // 非字母字符可以选择保持不变或者按需求处理
这样修改后,你就能在TextBox3中看到正确的加密字符串啦!
内容的提问来源于stack exchange,提问作者Taylor-byte
相关产品推荐
相关产品推荐

