将 Quint32 重新解释为 float
reinterpret quint32 as float
所以出乎意料的是(对我来说(在Qt中不可能将quint32重新解释为浮点值。
除了并集之外,还有其他方法可以重新解释变量吗?
union
{
float f;
quint32 q;
}u;
quint32 i = 666;
void * vp = &i;
float f = *(float*)vp;
您也可以直接将i
的地址强制转换为float *
但这会导致编译器抱怨违反严格的别名规则。并不是说在两者之间插入一个空指针会让它"更好",但至少它不会抱怨。
它按预期工作,二进制中的 666 是1010011010
,转换后f
是9.33265e-43
,这是二进制00000000000000000000001010011010
- 二进制表示是相同的。
确保在进行此类转换时,目标大小不大于源大小。在这种情况下,quint32 和 float 都是 4 个字节,但如果目标大于源,您将读取"谁知道什么",这可能会产生负面影响。
Qt http://doc.qt.io/qt-5/qvariant.html 的 QVarinat class 怎么样
QVariant(qlonglong val(.toFLoat((
相关文章:
- 请解释"函数1(p1,p2,p3);"的输出
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 被解释为低级别const的const对象的地址
- 计算每个节点的树高,帮助我解释这个代码解决方案
- MSVC将仅移动结构参数解释为指针
- 内联程序集printf将整数解释为地址
- 有人能解释一下为什么下界是这样工作的吗C++的
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 有人能为我解释一下C++代码吗
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 你能解释一下什么运行时错误是如何解决它的吗?
- 没有从阵列<float>到阵列<int>的可行转换
- 请解释字谜的代码,我看不懂计数器数组,每个值已经是0
- 数组下标的类型"float*[float]"无效
- 有人可以向我解释为什么控制台输出 0 吗?
- 着色器将uint8投射到float,并将其重新解释回uint
- 将int重新解释为float的最有效的标准兼容方式
- 使用boost multiprecision/mpfr float-字符串不能被解释为有效的整数错误
- 将 Quint32 重新解释为 float