有没有什么巧妙的方法,除了将数字转换为QByteArray
,来保存quint64
吗QSettings
?问题是QVariant
不接受qint64
也不quint64
。
问问题
5365 次
3 回答
11
QVariant
支持qlonglong
和qulonglong
。正如文档所说,这些与qint64
和相同quint64
。所以你可以只使用QVariant::QVariant(qlonglong)
and QVariant::toLongLong
。
于 2013-09-26T12:50:46.347 回答
1
如果您存储qint64
为字符串怎么办。QString 支持这样的转换:QString::number(qlonglong n, int base)
,其中与 .qlonglong
相同qint64
。同for quint64
-use QString::number(qulonglong n, int base)
,wherequlonglong
同quint64
。
QSettings settings("config.ini", QSettings::IniFormat);
[..]
qint64 largeNumber = Q_INT64_C(932838457459459);
settings.setValue("LargeNumber", QString::number(largeNumber));
[..]
于 2013-09-24T07:08:13.793 回答
0
另一个解决方案是认识到 IEEE 754 双格式有一个 53 位小数(不要忘记隐含的第 53 位!)和一个符号位。这允许您在不损失精度的情况下存储无符号 53 位整数或有符号 54 位整数。您可以在以下情况下存储:
- 你的 qint64 的绝对值小于 2^55,或者
- 你的 quint64 小于 2^54。
于 2013-09-25T13:05:02.680 回答