C++ 将带有空格的十六进制字符串拆分为Qt中的bytearray

C++ 将带有空格的十六进制字符串拆分为Qt中的bytearray,c++,qt,C++,Qt,我是新来的。 我正在尝试拆分带有空格的十六进制字符串,以便发送到串行端口 代码如下: QByteArray ba; QString sometext = ui->txtDataToSend->toPlainText(); QStringList query = sometext.split(QRegExp("\\s")); ba.resize(query.size()); for (int i = 0; i < query.size();i++) { ba[i] =

我是新来的。 我正在尝试拆分带有空格的十六进制字符串,以便发送到串行端口

代码如下:

QByteArray ba;
QString sometext = ui->txtDataToSend->toPlainText();
QStringList query = sometext.split(QRegExp("\\s"));
ba.resize(query.size());
for (int i = 0; i < query.size();i++) {

   ba[i] =  ?????
}

serial->write(ba);
QByteArray-ba;
QString sometext=ui->txtDataToSend->toPlainText();
QStringList query=sometext.split(QRegExp(“\\s”);
ba.resize(query.size());
for(int i=0;i写入(ba);
拆分是可以的,但是我不知道应该在for循环中放入什么


请给出您的建议

为什么不直接使用
QString::toAscii()
QString::toLatin1()
(Qt5)?它为您提供了一个
QByteArray

无需拆分十六进制编码的数据,只需使用:

如果您有无效的十六进制数据,例如一个字节仅使用一个十六进制编码,而没有第一个“0”,或者使用两个以上字符,请使用以下循环:

QByteArray-ba;
QString sometext=ui->txtDataToSend->toPlainText();
QStringList query=sometext.split(QRegExp(“\\s”);
ba.resize(query.size());
for(inti=0,j=0;i写入(ba);

这将解释十六进制字符串“12 3 4567 F0 F”与“12 03 67 F0 0F”相同。

谢谢,非常有用。
QString sometext = ui->txtDataToSend->toPlainText();
QByteArray ba = QByteArray::fromHex(sometext.toLatin1());
QByteArray ba;
QString sometext = ui->txtDataToSend->toPlainText();
QStringList query = sometext.split(QRegExp("\\s"));
ba.resize(query.size());
for (int i=0,j=0; i < query.size();i++) {
   bool ok;
   ba[j] = query[i].toUInt(&ok,16); // convert hex number to byte
   if(ok) j++; // if invalid number we will skip 
}
ba.resize(j);
serial->write(ba);