C++ 从QString-Qt C++;
我有点小问题,我需要发送一些字节。 其中一个是:0x04和0xFBC++ 从QString-Qt C++;,c++,qt,hex,qbytearray,C++,Qt,Hex,Qbytearray,我有点小问题,我需要发送一些字节。 其中一个是:0x04和0xFB QString first, second; first = "0x04"; second = "0xFB" QByteArray array; array[0] = first; array[1] = second; ecc...ecc.. 怎么解决? 我试过这个: array[0] = first.toUInt(nullptr,16); 但最后一个转换为其他值的十六进制。 如何解决 您可以使用: QByteArray
QString first, second;
first = "0x04";
second = "0xFB"
QByteArray array;
array[0] = first;
array[1] = second;
ecc...ecc..
怎么解决?
我试过这个:
array[0] = first.toUInt(nullptr,16);
但最后一个转换为其他值的十六进制。
如何解决 您可以使用:
QByteArray array=first.toLatin1() + second.toLatin1();
array.replace("0x","");
array= QByteArray::fromHex(array);
您可以将字节直接转换为十六进制代码,并将其附加到最终字节数组,如下所示:
QByteArray array;
array.append(QByteArray::fromHex("04"));
array.append(QByteArray::fromHex("FB"));
或者简单地说:
QByteArray array = QByteArray::fromHex("04FB");
请看一看。我相信,其中一个例子正好说明了您要做的事情。您是想将
0x04
作为字节发送,还是想将其作为文本发送“0x04”
?我想发送0x04,即字节,ma这个字节是从字符串生成的,我需要转换它。我使用了appena,但是QByteArray的最终格式是错误的……我需要将字节插入QByteArray的索引中。(数组[0]=first;好的,知道了。可以转换十六进制数,但是:要么你必须删除前面的0x
(并使用base 16),要么你使用base 0。你可能必须将QString::toUInt()
的结果转换为char
以消除相应的编译器警告。用你的解决方案,array.append(QByteArray::fromHex(first));不使用QString变量。若要将此解决方案与QString变量一起使用,您需要首先使用以下方法之一将其转换为QByteArray:QString::toLatin1(),QString::toAscii(),QString::toLocal8Bit()
。例如:array.append(QByteArray::fromHex(first.toLocal8Bit()+second.toLocal8Bit());