我想轉換一個UnsafePointer<UInt16>
到UnsafePointer<Float>
,到目前爲止我用這個解決方案結束:如何將UnsafePointer映射到另一個類型?
let bufferSize = 1024
let buffer: UnsafePointer<UInt16> = ....
let tmp = UnsafeBufferPointer(start: buffer, count: bufferSize).map(Float.init)
let converted: UnsafePointer<Float> = UnsafePointer(tmp)
它的工作原理,但它不是因爲我創建中間Array
的有效方式我有感覺。有沒有更好的方法來做到這一點?
您的代碼*將每個UInt16映射到一個(32位)浮點。如果這是意圖,那麼需要一個新的緩衝區。 - 或者你想*重新解釋緩衝區,例如將1024 UInt6值解釋爲512浮點值? –
@MartinR我的意圖是將每個UInt16映射到(32位)Float。 – klefevre
那麼,你*需要*一個新的數組,因爲浮動需要兩倍的空間,你不能只是「轉換指針」。 –