将quint64转换为qstring,反之亦然

时间:2018-07-09 15:24:41

标签: qt qt5

我正在努力在我的应用程序中实现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();

1 个答案:

答案 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()