在Qt中出乎意料地(对我而言),不可能将quint32重新解释为浮点值。
除了工会之外,还有其他方法可以重新解释变量吗?
union
{
float f;
quint32 q;
}u;
答案 0 :(得分:0)
quint32 i = 666;
void * vp = &i;
float f = *(float*)vp;
您也可以直接将i
的地址强制转换为float *
,但这会导致编译器抱怨违反严格的别名规则。并不是说在它们之间插入一个空指针使它变得“更好”,但至少它不会抱怨。
按预期工作,二进制666为1010011010
,转换后f
为9.33265e-43
,二进制为00000000000000000000001010011010
- 二进制表示相同。
确保在进行此类转换时,目标尺寸不大于源尺寸。在这种情况下,quint32和float都是4个字节,但是如果目标大于源,你将会读到“谁知道什么”,这可能会产生负面影响。
答案 1 :(得分:-1)
Qt http://doc.qt.io/qt-5/qvariant.html
的QVarinat课怎么样?QVariant(qlonglong val).toFLoat()