2017-07-10 3 views
0

I CRC-Wert in uint haben, das ist:konvertieren CRC uint zu QByteArray QT - C++

95DF

Mein Ziel ist es Rückkehr aus uint zwei Byte in QByteArray.

ich dieses:

`CRC uint 95DF

// in einfachen i zurückkommen sollte

QByteArray [0] = 95;
QByteArray [1] = DF;

Ich habe versucht, Uint in QString konvertieren, aber diese eine Änderung Rückgabewert. Ho, um das Ergebnis zu behalten und QByteArray zurückzugeben?

Dank

Antwort

1
unsigned int value = 0x95df; 
char bytes[2] = {}; 
bytes[0] = (value >> 8) & 0xff; 
bytes[1] = value & 0xff; 
QByteArray qba(bytes, 2); 

Alternativ:

unsigned int value = 0x95df; 
value = qToBigEndian(value); // for x86 and little endian, this puts the bytes in expected order. no-op on big-endian 
QByteArray qba((char*)&value, 2); 
+1

mit htons Arbeit richtig, statt mit qToBigEndian funktionieren nicht in qt . Ich habe htons benutzt. Danke –

+0

@ Mr.Developer - Ich habe nur etwa ein Dutzend Tippfehler geschrieben, die antworten. Bitte überprüfen Sie meine letzte Revisionsantwort, bevor Sie in Ihren Code einfügen. – selbie

+0

Ok danke! Arbeite richtig meine Checksumme –

0

Sie können auch QDataStream verwenden, um dies zu erreichen:

QByteArray qba; 
QDataStream qbaStream(&seq,QIODevice::WriteOnly); 
qbaStream << static_cast<quint16>(value);