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

Appending QString to a QByteArray as a hexadecimal instead characters?

我遇到的一个奇怪的事情是,在我正在做的循环中,我用 QStringList 的块填充 QByteArray。更准确地说,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);
qDebug() << QByteArray("ACDC"); // outputs "ACDC"

前提是那些字符对确实是十六进制,需要告诉指定:

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

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