除了将数字转换为 QByteArray
,还有没有简便的方法可以使用 QSettings
保存 quint64
?问题在于 QVariant
不接受 qint64
或 quint64
。
QVariant
支持qlonglong
和qulonglong
。根据文档,它们与qint64
和quint64
相同。因此,您可以直接使用QVariant::QVariant(qlonglong)
和QVariant::toLongLong
。
qint64
存储为字符串,该怎么办? QString支持这种转换:QString :: number(qlonglong n,int base)
,其中qlonglong
与qint64
相同。 对于quint64
也是如此-使用QString :: number(qulonglong n,int base)
,其中qulonglong
与quint64
相同。QSettings settings("config.ini", QSettings::IniFormat);
[..]
qint64 largeNumber = Q_INT64_C(932838457459459);
settings.setValue("LargeNumber", QString::number(largeNumber));
[..]
另一种解决方案是意识到IEEE 754双精度格式具有53位小数(不要忘记隐式的第53位!)和一个符号位。这使您可以存储无损精度的无符号53位整数或有符号54位整数。您可以存储以下内容: