【问题标题】:Convert CRC uint to QByteArray QT - C++将 CRC uint 转换为 QByteArray QT - C++
【发布时间】:2017-12-13 21:29:42
【问题描述】:

我将 CRC 值转换为 uint,即:

95DF

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

我明白了:

`CRC uint 95DF

//简单来说 我应该返回这个

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

我已经尝试将 uint 转换为 QString,但这一次改变了返回值。 何保留结果并返回 QByteArray ?

谢谢

【问题讨论】:

    标签: c++ qt crc qbytearray uint


    【解决方案1】:

    您也可以使用 QDataStream 来实现:

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

    【讨论】:

      【解决方案2】:
      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);
      

      【讨论】:

      • htons 可以正常工作,而 qToBigEndian 则不能在 qt 中工作。我用过htons。谢谢
      • @Mr.Developer - 我只写了十几个错别字来写出答案。在粘贴到您的代码之前,请仔细检查我的最新修订答案。
      猜你喜欢
      • 1970-01-01
      • 2016-08-14
      • 2014-12-23
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      • 2017-06-16
      相关资源
      最近更新 更多