2017-07-13 3 views
0

Ich habe kleines Problem, ich muss trugood modbus einige Bytes senden. Einer von einigen, ist: 0x04 und 0xFBByte in QByteArray einfügen von QString - Qt C++

QString first, second; 
first = "0x04"; 
second = "0xFB" 

QByteArray array; 
array[0] = first; 
array[1] = second; 
ecc...ecc.. 

Ho zu lösen? Ich habe das tryed:

array[0] = first.toUInt(nullptr,16); 

aber das letzte convert hex in anderen Wert. Wie lösen?

+1

Bitte schauen Sie sich ['QByteArray'] (http://doc.qt.io/qt-5/qbytearray.html#details) an. Ich glaube, eines der Beispiele zeigt genau, was Sie zu tun versuchen. – Scheff

+0

Möchten Sie '0x04' als Byte senden, oder möchten Sie es als literalen Text' "0x04" 'senden? – Scheff

+0

Ich möchte senden 0x04 das ist Byte, ma dieses Byte wird aus Zeichenfolge generiert, ich muss es konvertieren. Ich habe appena verwendet, aber das endgültige Format von QByteArray ist falsch .... Ich muss das Byte in qbytearray durch den Index einfügen. (Array [0] = erste; –

Antwort

0

können Sie:

QByteArray array=first.toLatin1() + second.toLatin1(); 
array.replace("0x",""); 
array= QByteArray::fromHex(array); 
0

Sie können die Bytes direkt in Hex-Code tun konvertieren und es auf die endgültige bytearray wie folgt anhängen:

QByteArray array; 
array.append(QByteArray::fromHex("04")); 
array.append(QByteArray::fromHex("FB")); 

Oder einfach:

QByteArray array = QByteArray::fromHex("04FB"); 
+0

mit Ihren Lösungen array.append (QByteArray :: fromHex (first)); nicht mit der QString-Variablen arbeiten –

+0

Um diese Lösung mit der QString-Variablen zu verwenden, müssen Sie sie zunächst mithilfe einer der folgenden Methoden in QByteArray konvertieren : 'QString :: toLatin1(), QString :: ToASCII(), QString :: toLocal8Bit()' wie folgt aus:. 'array.append (QByteArray :: fromHex (first.toL ocal8Bit() + second.toLocal8Bit())); ' –

Verwandte Themen