2017-07-10 38 views
0

我已經CRC值轉換成UINT是:轉換CRC UINT到的QByteArray QT - C++

95DF

我的目標是在QByteArray中UINT兩字節的回報。

我得到這樣的:

`CRC UINT 95DF

//在簡單 我應該返回這個

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

我試過將uint轉換爲QString,但是這個改變了返回值。 何保持結果並返回QByteArray?

感謝

回答

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

或者:

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

與htons的工作,而不是與qToBigEndian不QT工作。我使用htons。謝謝 –

+0

@Developer先生 - 我只做了大約十幾個打字的答案。在粘貼到您的代碼之前,請仔細檢查我的最新修訂版答案。 – selbie

+0

好的,謝謝!正確工作我的校驗和 –

0

您還可以使用QDataStream來實現這一目標:正確

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