我希望能够从二进制文件中读取一半浮点数并将它们转换为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 ) –