gpt4 book ai didi

ios - 如何将 UnsafePointer 映射到另一种类型?

转载 作者:搜寻专家 更新时间:2023-10-31 22:56:54 25 4
gpt4 key购买 nike

我正在尝试转换 UnsafePointer<UInt16>UnsafePointer<Float>到目前为止,我以这个解决方案结束:

let bufferSize = 1024
let buffer: UnsafePointer<UInt16> = ....
let tmp = UnsafeBufferPointer(start: buffer, count: bufferSize).map(Float.init)
let converted: UnsafePointer<Float> = UnsafePointer(tmp)

它有效,但我觉得这不是一种有效的方法,因为我正在创建一个中间体 Array ...有更好的方法吗?

最佳答案

您可以使用 withMemoryRebound 将指针从一种类型转换为另一种类型:

buffer.withMemoryRebound(to: Float.self, capacity: 1024) { converted -> Void in
// use `converted` here
}

但要小心 MemoryLayout<Float>.size4 (即 32 位)和 MemoryLayout<UInt16>显然是 2 (即 16 位),所以 bufferSize你的Float将是你的一半 UInt16缓冲区。

关于ios - 如何将 UnsafePointer 映射到另一种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44842056/

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