gpt4 book ai didi

swift - memcpy 与 swift 中结构的偏移量

转载 作者:行者123 更新时间:2023-11-30 12:08:07 28 4
gpt4 key购买 nike

我正在接收分成 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 个数据包。怎么了?

谢谢!

最佳答案

经过一些实验,我找到了有效的代码:

        let destination: UnsafeMutableRawPointer = &settings + maxPacketSize * (Int(packetNumber) - 1)
memcpy(destination, value.bytes + 1, value.length - 1)

看起来没有显式声明 UnsafeMutableRawPointer 它只是创建了 UnsafeRawPointer。有趣的是,这只是在增加偏移的情况下。

关于swift - memcpy 与 swift 中结构的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46437901/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com