我已經CRC值轉換成UINT是:轉換CRC UINT到的QByteArray QT - C++
95DF
我的目標是在QByteArray中UINT兩字節的回報。
我得到這樣的:
`CRC UINT 95DF
//在簡單 我應該返回這個
的QByteArray [0] = 95;
QByteArray [1] = DF;
我試過將uint轉換爲QString,但是這個改變了返回值。 何保持結果並返回QByteArray?
感謝
我已經CRC值轉換成UINT是:轉換CRC UINT到的QByteArray QT - C++
95DF
我的目標是在QByteArray中UINT兩字節的回報。
我得到這樣的:
`CRC UINT 95DF
//在簡單 我應該返回這個
的QByteArray [0] = 95;
QByteArray [1] = DF;
我試過將uint轉換爲QString,但是這個改變了返回值。 何保持結果並返回QByteArray?
感謝
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);
您還可以使用QDataStream來實現這一目標:正確
QByteArray qba;
QDataStream qbaStream(&seq,QIODevice::WriteOnly);
qbaStream << static_cast<quint16>(value);
與htons的工作,而不是與qToBigEndian不QT工作。我使用htons。謝謝 –
@Developer先生 - 我只做了大約十幾個打字的答案。在粘貼到您的代碼之前,請仔細檢查我的最新修訂版答案。 – selbie
好的,謝謝!正確工作我的校驗和 –