【发布时间】:2017-09-27 00:59:23
【问题描述】:
我正在接收拆分为 3 个数据包的打包结构的蓝牙数据,其中每个数据包的第一个字节是该数据包的编号,其余的是数据。我正在使用下一个代码来组装结构:
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
guard let value = characteristic.value as NSData? else { return }
var packetNumber = UInt8()
let maxPacketSize = 17
value.getBytes(&packetNumber, length: 1)
memcpy(&settings + maxPacketSize * (Int(packetNumber) - 1), value.bytes + 1, value.length - 1)
}
它适用于第一个数据包,但第二个和第三个数据包不会复制到结构中,它仍然用零填充。 objc 中的相同方法适用于所有 3 个数据包。怎么了?
谢谢!
【问题讨论】:
标签: swift struct bluetooth memcpy