基本上我的问题是我有一个QT c ++程序,它根据仿射密码对自定义输入进行编码和解码。编码功能基于我从维基百科找到的功能完美地工作,但解码不是。当我跑,它说模26不能应用于双,我明白当我pow(a, -1);
它返回一个双,但我不明白为什么它会在我的,但不是任何其他解码器。这是解码函数,我的代码:
相关代码:
QString MainWindow::affineDecode(QString string)
{
QString done = "";
QString temp = "";
for (int x = 0; x < string.length(); x++)
{
if (parseAlphaOnly(string.at(x)))
{
//Formula: a^-1(x-b)%26
if (string.at(x).isLower())
{
//Broken code start:
temp = alphabetLower.at((pow(ui->spinBox->value(), -1) * (getAlphaPos(string.at(x)) - ui->spinBox_2->value())));
}
else if (string.at(x).isUpper())
{
temp = alphabetUpper.at(pow(ui->spinBox->value(), -1) * (getAlphaPos(string.at(x)) - ui->spinBox_2->value())%26);
}
//Broken code end
}
else if (!parseAlphaOnly(string.at(x)))
{
temp = string.at(x);
}
done += temp;
}
return done;
}