2016-02-28 38 views
0

我試圖將一些C#代碼(Chipmunk物理引擎)移植到Xojo。這個靜態變量聲明如何返回無窮大?

類聲明中,聲明瞭兩個公共靜態變量:

public static byte[] INFINITY = { 0x00, 0x00, 0x80, 0x7F }; 

public static float Infinity 
{ 
    get 
    { 
     return BitConverter.ToSingle(INFINITY, 0); 
    } 
} 

按照我的理解,從MSDN文檔,在靜態變量Infinity調用應返回形成一個單精度浮點數由從索引0開始的四個字節開始,即應該將0x0000807F作爲32位整數返回。那不是32895

回答

2

不,這字節是一個低級別存儲浮點數據的表示: https://en.wikipedia.org/wiki/Single-precision_floating-point_format

此外,這是IEEE格式的非常有用的在線計算器: http://www.h-schmidt.net/FloatConverter/IEEE754.html

嘗試設置「十六進制表示形式「設置爲0x7f800000,並在」投射到雙精度後「框中獲得」無限大「。

順便說一下,值是0x7f800000,而不是0x0000807f,因爲內存中字節的小端順序。