gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:53:17 24 4
gpt4 key购买 nike

我是 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] = ?????
}

serial->write(ba);

拆分没问题,但我不知道应该在 for 循环中放入什么

请多多指教

最佳答案

不需要拆分十六进制编码的数据,只需使用 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);

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

关于c++ - 将带有空格的十六进制字符串拆分为Qt中的bytearray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30155501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com