0

QJson を使用して、json 形式で返されたデータを解析しています。返される項目の 1 つは、80 文字のバイト配列です。QJson からの戻り値は QVariantMap であり、Qt Creator デバッガーで表示すると長整数の配列のように見えます。

Map を反復処理し、各 QVariant をバイトにキャストしてバイト配列に割り当てるよりも、QVariantMap をバイト配列に変換するより良い方法はありますか?

QByteArray byteArray[60];
QVariantMap returnedMap;
for (int n=0; n< returnedMap.count(); ++n){
  byteArray[n] = (char)returnedMap[n];
}

(上記のコードは説明のためのものであり、整数をバイトにキャストする適切な構文が何であるかはわかりません。上記のコードは、「型 'QVariant' から型 'char' への無効なキャスト」という結果になります)

4

1 に答える 1

0

「キーと値」のペアの数であるマップを値の配列にキャストする理由はわかりませんが、必要な場合、構文は次のようになります

QByteArray arr;
QVariantMap map;
foreach( QVariant tmp, map )
    arr.append( tmp.toChar() );

マップを繰り返し処理している間、昇順でキーからキーへと移動することに注意してください。配列の最初の要素は最小のキーを持つ要素になり、その逆も同様です。

于 2012-10-08T06:06:35.463 に答える