我正在努力在我的应用程序中实现SimpleCrypt加密。为此,我需要将quint64值作为键。加密期间,我想生成一个随机的quint64值,将其用于加密,然后将其添加到文本文件中。在解密过程中,我想读取文本文件,获取密钥值并将其用于解密。
我的“ quint64到qstring”和“ qstring到quint64”转换以及我的文本文件读取/写入机制无法正常工作。 我生成的文本文件具有这种类型的内容(多余的字符在换行符上,我不知道为什么粘贴在这里时看起来不像这样):
1658 é
有人可以解释如何正确执行此操作吗?
//generating random quint64 key
qsrand(QTime::currentTime().msec());
quint64 key = (quint64)qrand();
//storing key in text file
QString keyStr = QString::number(key);
QString keyFileName = "key.txt";
QFile file3(keyFileName);
if(!file3.open(QFile::WriteOnly|
QFile::Text))
{
return;
}
else{
QTextStream stream(&file3);
stream<<keyStr;
}
file3.close();
//Reading key value from text file (in a different function)
int key;
QString keyStr;
QString keyFile = QFileDialog::getOpenFileName(this, "Open key file");
QFile file5(keyFile);
if(!file5.open(QFile::ReadOnly|
QFile::Text))
{
QTextStream in(&file5);
in >> keyStr;
}
file5.close();
key = keyStr.toULongLong();
答案 0 :(得分:0)
很漂亮在qt中转发:
//from quint to string
quint64 number{18446744073709551615};
QString k{""};
k = QString::number(number);
qDebug() << "k is now: " << k;
//from string to quint
quint64 numberBack{1};
QString kBack{"18446744073709551615"};
numberBack = static_cast<quint64>(kBack.toULongLong());
qDebug() << "kback is now: " << numberBack;
任意数字: 18446744073709551615 实际上是quint64可以容纳的最大值,您可以检查是否这样做:
std::numeric_limits<quint64>::max()