2012-01-13 11 views
1

さんの音声データはvoid * constです。私は短い配列(short *)私のコーデックのオーディオデータが必要です。Objectiveを使用してvoid *(void * const mAudioData)をShort *に変換しますか?

Objective cのvoid * constをShort *に変換する方法は?ボイドから短い可能性のある型キャスト?または私はOSReadBigInt16のようなバイトオーダー変換を使用する必要がありますか?もしそうなら、変換のためのサンプル?解決策を見つけるのを手伝ってください。

+0

ありがとうございます。型キャスティング自体はうまく動作します。 –

答えて

1

はい、Objective-Cはタイプキャストの場合と同じです。

(short *)voidPointer 

バイトが正しい順序(すなわち、エンディアン不一致)に含まれていない場合は、あなたが必要です:それはあなたがshort *ポインタとしてごvoid *ポインタを解釈したい場合は、すべてを行う必要があることを意味しますそれにも対処するために、あなたの質問の情報に基づいているかどうかを判断する方法はありません。

+0

速い返信をいただきありがとうございます。私はIOSデバイスのための上記の変換が必要です。もう1つはvoid(*は8ビット)からunsigned charを型キャストしていますが、うまくいきます。もし私がショート(16ビット)にキャストすることが可能ですか??? –

+0

あなたは 'void *'を間接的に参照することはできません。だから誰が誰の気にしているのですか?それがうまくいくかどうかは、あなたとあなたのプログラムの詳細に完全に依存します。 'void *'ポインタが指すデータは何ですか? 16ビットのバイナリデータですか?その場合、単純な型キャストは問題ありません。もしそうでなければ、もっとやるべきことがあります。 –

+0

ポインタを与えたAPIのドキュメントを確認してください。 –

1

void*は、型なしポインタを宣言するための規約です。そのようなポインタは、である必要があります。一部のデータ型へのポインタとしてが再解釈されます。それが動作するかどうかは、あなたまたはAPIがvoid*ポインターによって指し示されたアドレスに置かれているかどうかによって決まります。ギャップがないshort値のシーケンスの場合は、short*への単純なキャストが有効になります。それ以外の場合は、追加の変換を実行する必要があります。

関連する問題