С Swift 3, наклоняющимся к Data
вместо [UInt8]
, я пытаюсь выяснить, какой самый эффективный/идиоматический способ кодирования/декодирования swifts различного рода типов (UInt8, Double, Float, Int64 и т.д.). как объекты данных.
Здесь этот ответ для использования [UInt8], но он, похоже, использует различные API-интерфейсы указателей, которые я не могу найти в Data.
Я бы хотел, в основном, некоторые пользовательские расширения, которые выглядят примерно так:
let input = 42.13 // implicit Double
let bytes = input.data
let roundtrip = bytes.to(Double) // --> 42.13
Часть, которая действительно ускользает от меня, я просмотрел кучу документов, так это то, как я могу получить какую-то вещь-указатель (OpaquePointer или BufferPointer или UnsafePointer?) из любой базовой структуры (в которой все числа). В С, я бы просто ударил амперсанда перед ним, и там я пойду.