Присоединение 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 байта, поскольку каждая пара символов декодируется как шестнадцатеричная.