在Swift 3中将值转换为数据

时间:2017-04-03 12:38:26

标签: ios swift bluetooth

我正在使用蓝牙进行大量工作,大多数设计都是UInt8,这使得编码/解码数据流非常容易:

    func encode() -> Data {
        let values: [UInt8] = [value1, value2]
        return Data(bytes: values)
    }

    init(data: Data) {
        let values = Array(data)
        self.value1 = values[0]
        self.value2 = values[1]
    }

但现在我需要使用其他数据类型。我有一个相关的question on decoding,但现在还需要编码和传输Int16。我唯一的想法是像这样使用位移/屏蔽:

let x: Int16 = 21845
let x1 = UInt8(x >> 8)
let x2 = UInt8(x & 255)
let data = Data(bytes: [x2, x1])

是否有更清晰的方法,例如使用UInt8时不涉及使用指针和位移?最好是适用于其他数据类型的东西。

0 个答案:

没有答案