【问题标题】:Caesar cipher, wrap around when char's are >'z'凯撒密码,当 char >'z' 时环绕
【发布时间】:2019-04-21 00:49:36
【问题描述】:

我早些时候来过这里,并得到了一个手添加到字符 ASCII 引用以增加每个字母的密码转换。但是我不知道如何解决字符高于'z'的问题。

当字符到达字母表的末尾时,有人可以给我一个提示吗?当然,我不希望任何人为我做我的工作。

char decrypt(char letter)
{
int increment = 9;
if(letter == ' ')
{
    return letter;
}
letter += increment;
return letter;
}

int main()
{
char message[446]; int i = 0; char space = ' ';
ifstream in("encryptedText.txt");
if(in.getline(message, 446))
{
    while(message[i])
    {
            cout << decrypt(tolower(message[i])) << endl;
            i++;
    }
}
else
{cout << "Can't read file" << endl;}
cout << endl;  
system("pause");
}

【问题讨论】:

  • @Marobri... 值得记住的是,ascii 字符可以直接转换为数字。如果您将它们视为数字,它将对您有所帮助...谷歌搜索 ascii 表,您可以看到可用于未来“字母数学”的普遍适用的数值。

标签: c++ encryption


【解决方案1】:

模运算是你的朋友。每当整数形成环而不是序列时,都可以应用模运算,例如:

5 % 4 == 17 % 4

您需要在相对于'a' 的整数空间中计算它,当然,适当地减去'a'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2020-05-31
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多