Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从QString-Qt C++;_C++_Qt_Hex_Qbytearray - Fatal编程技术网

C++ 从QString-Qt C++;

C++ 从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

我有点小问题,我需要发送一些字节。 其中一个是: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 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());