因此,在Qt中出乎意料地(對我來說)不可能將quint32重新解釋爲浮點值。將quint32重新解釋爲float
除了工會重新解釋變量之外,還有其他方法嗎?
union
{
float f;
quint32 q;
}u;
因此,在Qt中出乎意料地(對我來說)不可能將quint32重新解釋爲浮點值。將quint32重新解釋爲float
除了工會重新解釋變量之外,還有其他方法嗎?
union
{
float f;
quint32 q;
}u;
怎麼樣從Qt的QVarinat類http://doc.qt.io/qt-5/qvariant.html
的QVariant(qlonglong VAL).toFLoat()
quint32 i = 666;
void * vp = &i;
float f = *(float*)vp;
你也可以直接投i
地址爲float *
但是,這將導致編譯器抱怨打破嚴格的別名規則。不是說在兩者之間插入一個空指針會使它變得更好,但至少它不會抱怨。
它正常工作,666以二進制爲1010011010
,後轉換f
是9.33265e-43
,這是二進制00000000000000000000001010011010
- 二進制表示是一樣的。
確保在進行此類轉換時,目標大小不會大於源大小。在這種情況下,quint32和float都是4個字節,但是如果目標大於源代碼,您將閱讀「誰知道什麼」,這可能會產生負面影響。
Qt與它沒有任何關係,它只是簡單的C++。 – dtech
聽起來像一個有缺陷的假設:'reinterpret_cast(myQuint32Var)'。 –
MSalters