将QString作为十六进制而不是字符附加到QByteArray?

时间:2017-01-23 09:17:51

标签: arrays list qt append qbytearray

我遇到的一个奇怪的事情是,在我正在进行的循环中,我正在使用QByteArray的块填充QStringList。更准确地说,QStringList采用标准QString并在每次遇到字符串中的“ - ”时将其拆分为较小的位。例如,如果QString包含"A1-B2-C3-D4-E5",它会将列表填充为小块(list[0]="A1",list[1]="B2",list[2]="C3",...)。但是,我需要这些字节来填充QByteArray,当我使用循环时,它只需要它的字符并将QByteArray填充为bytearray[0]="A",bytearray[1]="1",bytearray[2]="2",依此类推。考虑到我正在使用的代码,我想知道发生了什么错误?

以下是代码:

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

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

                ui->lineEdit->setText(output);

1 个答案:

答案 0 :(得分:1)

place a rectangualr image into an existing image

如果这些字符对确实是十六进制的,您需要指出:

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

前一个字节数组长4个字节,而后者只有2个字节长,因为每个字符对都被解码为十六进制。