将 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 个字节长,因为每个字符对都被解码为十六进制。
我遇到的一个奇怪的事情是,在我正在做的循环中,我用 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 个字节长,因为每个字符对都被解码为十六进制。