2017-01-23 12 views
0

私が遭遇した特有の事は、私がQByteArrayを投入している箇所で、QStringListの塊でループしていることです。より正確に言えば、QStringListは標準QStringをとり、文字列内で " - "が出現するたびに小さなビットに分割します。 Ergo。QString"A1-B2-C3-D4-E5"が含まれている場合、リストに小さなチャンク(list[0]="A1",list[1]="B2",list[2]="C3",...)が入力されます。しかし、私はQByteArrayを設定するためにそれらのバイトが必要です。ループを使用するときは、その文字を取り、QByteArraybytearray[0]="A",bytearray[1]="1",bytearray[2]="2"といっしょに入れます。私が使用しているコードを考えれば、何が間違っているのだろうと思っていますか?これらの文字ペアは十六進確かにあることはQStringをQByteArrayに16進数ではなく16進数として追加しますか?

QStringList inputArray = input.split('-'); 
       QByteArray output; 

       for(int i = 0; i < inputArray.count(); i++) 
       { 
        output.append(inputArray.at(i).toLatin1()); 
       } 

       ui->lineEdit->setText(output); 
+0

あなたの質問は - 私にとっては少なくとも - 非常に不明です。コードは、掲示されているように、 'output'が' QByteArray( "A1B2C3D4E5") 'と等価であることを期待しています。 –

+0

「あなたと他の人は何が間違っているのだろうか? – dtech

+0

私は何をしたいのでしょうか?バイトバイスを全部追加することです。現在、QByteArrayにはthis bytearray [0] = "A"、bytearray [1] = "1"、bytearray [2] = "B"、私はそれが完全な値すなわちbytearray [0] = "A1"、bytearray [1] = "B2"、bytearray [2] = "C3"を含む必要があります。 –

答えて

1
qDebug() << QByteArray("ACDC"); // outputs "ACDC" 

、あなたがそれを指定伝える必要があります:

qDebug() << QByteArray::fromHex("ACDC"); // outputs "\xAC\xDC" 

かつてのバイト配列は4バイトになります。ここ

はコードがあります各charペアは16進数としてデコードされるため、後者の長さは2バイトになります。

+0

QStringListチャンクを16進値として扱う方法はありませんか? –

+0

これは 'QByteArray :: fromHex()'とまったく同じですが、どうやってクリアされませんか?コードを 'output.append(QByteArray :: fromHex(inputArray.at(i).toLatin1()))に変更するだけです。 ' – dtech

+0

"すべてクリーン "と" qmake "の後で動作します。ありがとうございました! –

関連する問題