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

时间:2015-05-10 19:04:06

标签: c++ qt

我是Qt的新手。 我试图拆分带有空格的六角形字符串,以便发送到串口

这是代码:

\Illuminate\Http\Request

分裂是好的,但我不知道我应该把它放在for循环中

请你的建议

2 个答案:

答案 0 :(得分:1)

为什么不使用$("#ben-count-submit").click(function (event) { event.preventDefault(); }); QString::toAscii()(Qt5)?它会为您提供QString::toLatin1()

答案 1 :(得分:1)

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

QString sometext = ui->txtDataToSend->toPlainText();
QByteArray ba = QByteArray::fromHex(sometext.toLatin1());

如果您的十六进制数据无效,例如一个字节只用一个十六进制编码而没有第一个' 0'或多于两个字符,请使用QString::toUInt循环:

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);

这将解释十六进制字符串&#34; 12 3 4567 F0 F&#34;与&#34; 12 03 67 F0 0F&#34;。

相同