Диаграмма JS - контекст как старшая диаграмма

<44fa0000> является представлением памяти большого двоичного числа двоичного числа с плавающей запятой 2000.0. Чтобы получить номер обратно из данных, вы должны сначала прочитать его в UInt32, преобразовать из бай-тина с бай-тином в главный, а затем передать результат в Float.

В Swift 2, который был бы

func floatValueFromData(data: NSData) -> Float {
    return unsafeBitCast(UInt32(bigEndian: UnsafePointer(data.bytes).memory), Float.self)
}

Пример:

let bytes: [UInt8] =  [0x44, 0xFA, 0x00, 0x00]
let data = NSData(bytes: bytes, length: 4)

print(data) // <44fa0000>
let f = floatValueFromData(data)
print(f) // 2000.0

В Swift 3 вы использовали бы Data вместо NSData, а unsafeBitCast можно заменить на инициализатор Float(bitPattern:):

func floatValue(data: Data) -> Float {
    return Float(bitPattern: UInt32(bigEndian: data.withUnsafeBytes { $0.pointee } ))
}
1
задан El Hombre Sin Nombre 27 March 2019 в 11:26
поделиться