Ios Swift 3不安全指针

Ios Swift 3不安全指针,ios,swift2,swift3,Ios,Swift2,Swift3,我正在从Swift 2迁移到Swift 3,我在某一点上被卡住了 Swift 2 let arr = UnsafePointer<UInt32>(UnsafePointer<UInt8>(buf).advanced(by: off)) let msk = arr[0].bigEndian & 0x7fffffff 但是在第二行上面写着 类型“UnsafeRawPointer”没有下标成员 我如何才能成功地将其转换为Swift 3?我想您正在寻找这样的产品: le

我正在从Swift 2迁移到Swift 3,我在某一点上被卡住了

Swift 2

let arr = UnsafePointer<UInt32>(UnsafePointer<UInt8>(buf).advanced(by: off))
let msk = arr[0].bigEndian & 0x7fffffff
但是在第二行上面写着

类型“UnsafeRawPointer”没有下标成员


我如何才能成功地将其转换为Swift 3?

我想您正在寻找这样的产品:

let ppp = UnsafePointer<UInt8>(buf).advanced(by: off)
let arr = unsafeBitCast(ppp, to: UnsafeMutablePointer<UInt32>.self)
let ppp=UnsafePointer(buf).advanced(by:off)
设arr=unsafeBitCast(ppp,收件人:UnsafeMutablePointer.self)

以下是使用withMemoryRebound执行该操作的方法: 本例中的容量为1,因为您只查看结果数组的第一个元素

let arr = UnsafePointer<UInt8>(buf).advanced(by: off)
let msk = arr.withMemoryRebound(to: UInt32.self, capacity: 1) { p in
    return p[0].bigEndian & 0x7fffffff
}
let arr=UnsafePointer(buf).advanced(by:off)
设msk=arr.withMemoryRebound(to:UInt32.self,容量:1){p in
返回p[0]。bigEndian&0x7fffffff
}

这可能就是您要寻找的:
let arr = UnsafePointer<UInt8>(buf).advanced(by: off)
let msk = arr.withMemoryRebound(to: UInt32.self, capacity: 1) { p in
    return p[0].bigEndian & 0x7fffffff
}