8

私はこれに関してたくさんの質問を見てきましたが、今のところ私には何もうまくいきませんでした。

最も一般的な2つの答えを試しましたが、同じエラーが発生します。

ただであるunsigned char buf[10];

これ、

QByteArray databuf;
databuf = QByteArray::fromRawData(buf, 10); 

またはこれ、

QByteArray databuf;
databuf = QByteArray(buf, 10);

同じエラーが発生しました、

error: invalid conversion from 'unsigned char*' to 'const char*' [-fpermissive]

何かアドバイス?

ありがとうございました

4

2 に答える 2

10

これは単なる署名の問題なので、これは機能するはずです。

databuf = QByteArray(reinterpret_cast<char*>(buf), 10);

または、レガシーCスタイルのキャストを使用する場合:

databuf = QByteArray((char*)buf, 10);

これは、使用すべき多くの議論の1つです。

より簡単な代替方法は、他の理由で必要がない場合unsignedは、の宣言から削除することです。buf

このメソッドを使用する場合fromRawData、バイトはコピーされないため、bufすぐにスコープから外れないように注意してください。よくわからない場合は、使用しないでください...

于 2013-03-11T11:23:39.823 に答える
1

それが言うように、渡される引数は、ではなく、でfromRawDataなければなりません。配列を次の配列にすることができます:const char*unsigned char*const char

const char buf[10];

const char*配列は、期待どおりに、最初の要素へのポインタに変換できますfromRawData

于 2013-03-11T11:18:34.893 に答える