Я пишу приложение, в котором мне нужно преобразовать массив данных различных типов в массив данных, который я отправлю на другое устройство через порт UDP.
Пока у меня есть следующий код:
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
let a: UInt8 = 42
var da:[UInt8] = [a]
let data = Data(buffer: UnsafeBufferPointer(start: &da, count: da.count))
let x = data.toArray(type: UInt8.self)
print(x)
}
}
Пока это работает.Я получаю следующий вывод: [42]
Если бы я изменил let a: UInt8 = 42
на let a: Float = 3.14
и var da:[Float] = [a]
, я получил бы результат [195, 245, 72, 64]
.
Все вышеперечисленное - это то, чтоЯ жду.Проблема заключается в следующем коде:
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
let b: UInt8 = 42
let a: Float = 3.14
var da:[Any] = [a, b]
let data = Data(buffer: UnsafeBufferPointer(start: &da, count: da.count))
let x = data.toArray(type: UInt8.self)
print(x)
}
}
Здесь я ожидаю получить [42, 195, 245, 72, 64]
, за исключением того, что получаю следующий результат: [42, 0, 0, 0, 0, 0, 0, 0, 176, 10, 10, 0, 0, 96, 0, 0, 104, 41, 172, 143, 255, 127, 0, 0, 32, 161, 114, 0, 1, 0, 0, 0, 195, 245, 72, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 228, 32, 1, 1, 0, 0, 0, 168, 153, 114, 0, 1, 0, 0, 0]
.
Может кто-нибудь объяснить мнепочему это происходит и что я должен изменить, чтобы получить ожидаемый результат?
Edit: Хотя я мог пропустить заполнение, я пытаюсь подделать сервер, который соответствует приведенной ниже спецификации, в то время какЯ занимаюсь разработкой приложения.
https://forums.codemasters.com/discussion/136948/f1-2018-udp-specification#latest