1

我有大量数字的问题。我从 QSettings 中检索了一个数字。

settings.beginGroup( "filesizes" );
this->fileSize = settings.value( 309355 ).toLongLong();
qDebug() << __FILE__ << ":" << __LINE__ << std::numeric_limits<qlonglong>::max();              
qDebug() << __FILE__ << ":" << __LINE__ << "this->filesize: " << this->fileSize;
qDebug() << "loaded filesize" << this->fileSize;

设置中存储的数字是 12062891612(~11,x GB,以字节为单位)。第四行返回“-822010276”,我不明白为什么。this->fileSize 是 qint64。我减少了设置中的数字,只要它小于 2147483647 (2^31-1) 一切都很好,但在上面我得到负数。我不明白,因为longlong和qint64应该足够了?!有谁知道,出了什么问题?

提前致谢!

4

2 回答 2

0

问题似乎出在其他地方。提供的代码可以正常工作,QSettingsQVariant不会截断 long long 值。

于 2013-10-24T16:51:37.010 回答
0

您需要将数据类型切换为 quint64 以获得更大的最大大小 2^32-1。它只会给你额外的一点,实际上看起来你可能很快就会超过它,并且需要想出一个更有创意的解决方案,比如将来将你的大小存储为 KB 或 MB。

于 2013-10-24T13:03:10.563 回答