2016-11-13 270 views
-1

因此,在Qt中出乎意料地(對我來說)不可能將quint32重新解釋爲浮點值。將quint32重新解釋爲float

除了工會重新解釋變量之外,還有其他方法嗎?

union 
{ 
float f; 
quint32 q; 
}u; 
+0

Qt與它沒有任何關係,它只是簡單的C++。 – dtech

+0

聽起來像一個有缺陷的假設:'reinterpret_cast (myQuint32Var)'。 – MSalters

回答

0
quint32 i = 666; 
    void * vp = &i; 
    float f = *(float*)vp; 

你也可以直接投i地址爲float *但是,這將導致編譯器抱怨打破嚴格的別名規則。不是說在兩者之間插入一個空指針會使它變得更好,但至少它不會抱怨。

它正常工作,666以二進制爲1010011010,後轉換f9.33265e-43,這是二進制00000000000000000000001010011010 - 二進制表示是一樣的。

確保在進行此類轉換時,目標大小不會大於源大小。在這種情況下,quint32和float都是4個字節,但是如果目標大於源代碼,您將閱讀「誰知道什麼」,這可能會產生負面影響。