Qtで短い配列をbytearrayに変換しようとしています。 には、キャストを実行するための機能があります。 私は変換するためにconst char *を使用する必要がある場合、どうすればよいでしょうか。 、再解釈キャストを使用するよりも良い方法がありますbytearrayへのショートカットの型キャスト配列
ありがとうございます。
Qtで短い配列をbytearrayに変換しようとしています。 には、キャストを実行するための機能があります。 私は変換するためにconst char *を使用する必要がある場合、どうすればよいでしょうか。 、再解釈キャストを使用するよりも良い方法がありますbytearrayへのショートカットの型キャスト配列
ありがとうございます。
あなたはあなたが*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)
{...}
ありがとう非常に – ken
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)を含む文字の配列のように見えます。
[C++は関数へのconstオブジェクト参照の受け渡し]可能な複製(http://stackoverflow.com/questions/9327437/c-passing-a-const-object-reference-to-a-function) –