Ich bin auf der Suche nach einer robusten und eleganten Möglichkeit, vier Big-Endian-Bytes aus einem Array als Float zu extrahieren.Swift: float aus Byte-Daten extrahieren
Ich kann einen UInt32 mit den Bits über etwas wie diese:
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
Aber ich kann eine gute Art und Weise nicht herausfinden, diese in einen Float in Swift zu konvertieren.
Zum Beispiel in Java:
float f = Float.intBitsToFloat(bits)
oder in C:
float f = *(float *)&bits;
Ich versuchte, die dataPtr mit einem Schwimmer UnsafePointer Gießen, aber dann ist das endianness ein Problem.
Irgendwelche Vorschläge?
, die besser ist ... –
Ja, noch deutlicher. Vielen Dank! – NickHowes