問題タブ [uint16]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
113 参照

c - [UIn16] を UnsafeMutablePointer に迅速に変換

Swift からa を取る C 関数を呼び出すために、UInt16配列を anに変換しようとしています。UnsafeMutablePointer<UInt16>uint16_t *

出発点が[UInt8]で、目的地がUnsafeMutablePointer<UInt8>だったら、すべてが簡単です。配列を に変換しData、そこからNSDataを呼び出しbytes.assumingMemoryBound、これで (ほぼ) 完了です。

しかし、目の前のタスクでは、私が検討しているいくつかの異なるパスがあります。1 つの方法は、 を に変換し、[UInt16]上記[UInt8]と同じデータ パスを使用してから、assumingMemoryBound呼び出しで別の型を指定することです。

ただし、それは予想以上に複雑であることが証明されています。UInt8たった 2 つの s の配列を 1 つに変換する方法については、たくさんの質問がありUInt16ます。1 つのを 2 つの sに変換する方法を尋ねる1 つの質問を見つけましたが、配列を変換するときはすべてがより複雑になっているようです。UInt16UInt8

私が試みている他のアプローチは、単純に配列値を取得し、中間呼び出しまたはそのようなものを使用して[UInt16]変換しようとすることですが、Swift には一致しないさまざまなポインター型がたくさんあります。具体的には、これが私の以前の試みの1つです。UnsafeMutablePointer<UInt16>withUnsafeBytes

ただし、次のエラーが発生します。

タイプ「UnsafeRawBufferPointer」の値を予期される引数タイプ「UnsafePointer」に変換できません

おそらく、適切な質問や適切なドキュメント ページをまだ見つけていないだけなので、正しい方向への指針をいただければ幸いです。