将CRC uint转换为QByteArray QT - C ++

时间:2017-07-10 08:22:32

标签: c++ qt crc qbytearray uint

我将CRC值转换为uint:

  

95DF

我的目标是从QByteArray中的uint两个字节返回。

我明白了:

  

`CRC uint 95DF

     

//简单   我应该回复这个

     

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

我试过将uint转换为QString,但是这个改变了返回值。 何保持结果并返回QByteArray?

由于

2 个答案:

答案 0 :(得分: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 :(得分:0)

您还可以使用QDataStream来实现此目的:

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