2012-02-17 14 views
2

Qtで短い配列をbytearrayに変換しようとしています。 には、キャストを実行するための機能があります。 私は変換するためにconst char *を使用する必要がある場合、どうすればよいでしょうか。 、再解釈キャストを使用するよりも良い方法がありますbytearrayへのショートカットの型キャスト配列

ありがとうございます。

+0

[C++は関数へのconstオブジェクト参照の受け渡し]可能な複製(http://stackoverflow.com/questions/9327437/c-passing-a-const-object-reference-to-a-function) –

答えて

2

あなたはあなたが*pをコピーするアレイ内のすべてのバイトを通過するために、ポインタを使用し、単にshort配列

short s[10]; 
unsigned char *p = reinterpret_cast<unsigned char*>(s); 

にバイトのポインタをキャストしてバイトに短いの配列を変換することができますあなたが望むなら、バイト配列。

for (unsigned char *p = reinterpret_cast<unsigned char*>(s); 
     p < s + sizeof(s); 
     ++p) 
{...} 
+0

ありがとう非常に – ken

0

reinterpret_castを使用できますが、コードを非常にアーキテクチャ固有のものにしていることに注意してください。 reinterpret_castの使用は、あなたのコードが間違っていることを正確に保証するものではありませんが、警鐘を鳴らすはずです。

あなたは、ショートパンツの配列を指定して、同じ値を持つバイトの配列を生成している何をしたいのか、あなたはおそらく、この場合:

void copy(char *to_byte_array, short const *from_short_array, std::size_t size) 
{ 
    for (std::size_t pos = 0; pos != size; ++pos) 
    { 
     to_byte_array[pos] = from_short_array[pos]; 
    } 
} 

あなたはreinterpret_castを使用している場合

含むあなたの短い配列発言を20,20,30,40(またはアーキテクチャに応じて20,0,30,0,40,0)を含む文字の配列のように見えます。

+0

私に非常にありがとう、ありがとうございます。 – ken

+0

"短整数からconst char *への無効な変換" – ken

+0

それはそれを投げているのではないかと疑います。コンパイルエラーのように聞こえます。私はあなたが前にコールバックでパラメータを持っていたと思います –

関連する問題