gpt4 book ai didi

swift - 如何从 UnsafeMutableRawPointer 中获取字节?

转载 作者:IT王子 更新时间:2023-10-29 05:09:06 30 4
gpt4 key购买 nike

如何访问由 C API(Core Audio 等)传递给 Swift 函数的 UnsafeMutableRawPointer(Swift 3 中的新功能)指向的内存之外的字节(或 Int16、 float 等)

最佳答案

load<T>从内存中读取原始字节并构造一个 T 类型的值:

let ptr = ... // Unsafe[Mutable]RawPointer
let i16 = ptr.load(as: UInt16.self)

可选的字节偏移量:

let i16 = ptr.load(fromByteOffset: 4, as: UInt16.self)

还有assumingMemoryBound()Unsafe[Mutable]RawPointer 转换而来到 Unsafe[Mutable]Pointer<T> ,假设指向的内存包含类型 T 的值:

let i16 = ptr.assumingMemoryBound(to: UInt16.self).pointee

对于值数组,您可以创建一个“缓冲区指针”:

let i16bufptr = UnsafeBufferPointer(start: ptr.assumingMemoryBound(to: UInt16.self), count: count)

一个缓冲区指针可能已经足够你的目的了,它是可订阅的,可以像数组一样被枚举。如有必要,从缓冲区指针创建一个数组:

let i16array = Array(i16bufptr)

正如@Hamish 所说,可以在以下位置找到更多信息和详细信息

关于swift - 如何从 UnsafeMutableRawPointer 中获取字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38983277/

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