将 Quint32 重新解释为 float

reinterpret quint32 as float

本文关键字:解释 float Quint32 新解释      更新时间:2023-10-16

所以出乎意料的是(对我来说(在Qt中不可能将quint32重新解释为浮点值。

除了并集之外,还有其他方法可以重新解释变量吗?

union
{
 float f;
 quint32 q;
}u;
  quint32 i = 666;
  void * vp = &i;
  float f = *(float*)vp;

您也可以直接将i的地址强制转换为float *但这会导致编译器抱怨违反严格的别名规则。并不是说在两者之间插入一个空指针会让它"更好",但至少它不会抱怨。

它按预期工作,二进制中的 666 是1010011010,转换后f9.33265e-43,这是二进制00000000000000000000001010011010 - 二进制表示是相同的。

确保在进行此类转换时,目标大小不大于源大小。在这种情况下,quint32 和 float 都是 4 个字节,但如果目标大于源,您将读取"谁知道什么",这可能会产生负面影响。

Qt http://doc.qt.io/qt-5/qvariant.html 的 QVarinat class 怎么样

QVariant(qlonglong val(.toFLoat((