我正在寻找一种强大而优雅的方法来从数组中提取四个大端字节作为Float.
我可以通过以下方式获得带有位的UInt32:
let data: [Byte] = [0x00, 0x00, 0x00, 0x40, 0x86, 0x66, 0x66, 0x00]
let dataPtr = UnsafePointer<Byte>(data)
let byteOffset = 3
let bits = UnsafePointer<UInt32>(dataPtr + byteOffset)[0].bigEndian
Run Code Online (Sandbox Code Playgroud)
但我无法想出一个很好的方法将其转换为Swift中的Float.
例如,在Java中:
float f = Float.intBitsToFloat(bits)
Run Code Online (Sandbox Code Playgroud)
或在C:
float f = *(float *)&bits;
Run Code Online (Sandbox Code Playgroud)
我尝试将dataPtr转换为浮点UnsafePointer,但是endianness是一个问题.
有什么建议?