Присоединение QString к QByteArray в виде шестнадцатеричного символа вместо символов?

Особая вещь, с которой я столкнулся, заключается в том, что в цикле, который я делаю, где я заполняю QByteArray с кусками QStringList, Чтобы быть более точным, QStringList берет стандарт QString и разбивает его на меньшие биты каждый раз, когда встречает "-" в строке. Ergo, если 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 ответ

Решение
qDebug() << QByteArray("ACDC"); // outputs "ACDC"

При условии, что эти пары символов действительно являются шестнадцатеричными, вы должны указать, что:

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

Первый байтовый массив будет иметь длину 4 байта, тогда как последний будет иметь длину всего 2 байта, поскольку каждая пара символов декодируется как шестнадцатеричная.

Другие вопросы по тегам