我希望能夠從二進制文件中讀取一半浮點數並將它們轉換爲Swift中的浮點數。我查看了其他語言(如Java和C#)的幾次轉換,但是我無法獲得與半浮點數對應的正確值。如果任何人都可以幫我實施,我將不勝感激。從Float到Half Float的轉換也是非常有用的。這是我試圖從這個Java implementation轉換的實現。在Swift中將半精度浮點數(字節)轉換爲浮點數
static func toFloat(value: UInt16) -> Float {
let value = Int32(value)
var mantissa = Int32(value) & 0x03ff
var exp: Int32 = Int32(value) & 0x7c00
if(exp == 0x7c00) {
exp = 0x3fc00
} else if exp != 0 {
exp += 0x1c000
if(mantissa == 0 && exp > 0x1c400) {
return Float((value & 0x8000) << 16 | exp << 13 | 0x3ff)
}
} else if mantissa != 0 {
exp = 0x1c400
repeat {
mantissa << 1
exp -= 0x400
} while ((mantissa & 0x400) == 0)
mantissa &= 0x3ff
}
return Float((value & 0x80000) << 16 | (exp | mantissa) << 13)
}
類似的問題在這裏:[如何將字節轉換爲Swift中的半浮點數?](http://stackoverflow.com/questions/32933771/how-to-convert-bytes-to-half-floats-in-swift ) –