Свойство bitPattern
для Double
возвращает 64-разрядное целое (без знака) с таким же представлением в памяти:
let doubleValue = 12.34
let encoded = doubleValue.bitPattern // UInt64
Обратное преобразование выполняется с
let decoded = Double(bitPattern: encoded)
print(decoded) // 12.34
Таким же образом вы можете конвертировать между Float
и UInt32
.
Для представления памяти, не зависящего от платформы (например, «big endian»), используйте
let encodedBE = doubleValue.bitPattern.bigEndian
let decoded = Double(bitPattern: UInt64(bigEndian: encodedBE))