gpt4 book ai didi

java - 如何将3个字母的小写字母向后移动?

转载 作者:行者123 更新时间:2023-12-02 13:27:00 29 4
gpt4 key购买 nike

我正在尝试在Kotlin中实施Caesar Cipher。在Caesar Cipher中,您可以通过在字母下方替换固定位置的字母来加密消息。您可以在here上查找更多信息,以及我采用的加密和解密方法。
我的加密正常工作。
注意:s用于字母转换,默认情况下我将其保持为3。

fun encrypt(message:String,s:Int=3):String{
var encrpt:String = ""
for(m in message){
if(m.isLetter() && m.isUpperCase())
encrpt+=((m + s - 65).toInt() % 26 + 65).toChar()

else if(m.isLetter() && m.isLowerCase())
encrpt+=((m + s - 97).toInt() % 26 + 97).toChar()

else
encrpt+=m
}
return encrpt
}
对于解密而不是加3,我减去3。但是我在解密中遇到了一些问题,这也仅适用于小写字母。
这是我的解密代码:
fun decrypt(message:String,s:Int=3):String{
var decrpt:String = ""
for(m in message){
if(m.isLetter() && m.isUpperCase())
decrpt+=((m - s + 65).toInt() % 26 + 65).toChar()

else if(m.isLetter() && m.isLowerCase())
decrpt+=((m - s + 97).toInt() % 26 + 97).toChar()

else
decrpt+=m
}
return decrpt
}
对于大写字母,我的输出很好:
J→G
但是对于小写字母,输出不正确。
-
我已将 this图片用于字符的十进制值。感谢您调查我的问题。

最佳答案

好的,所以我刚刚注意到作者最后给出了解密here的一些说明。

we can use the same function to decrypt, instead we’ll modify the shift value such that shift = 26-shift


所以现在解密功能看起来像这样:
fun decrypt(message:String,s:Int=3):String{
var decrpt:String = ""
for(m in message){
if(m.isLetter() && m.isUpperCase())
decrpt+=((m + (26-s) - 65).toInt() % 26 + 65).toChar()

else if(m.isLetter() && m.isLowerCase())
decrpt+=((m + (26-s) - 97).toInt() % 26 + 97).toChar()

else
decrpt+=m
}
return decrpt
}
不过,我很好奇我是否可以使用相反方向的相同移位来解密加密的文本。

关于java - 如何将3个字母的小写字母向后移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63318274/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com