来自 QtEndian 的冲突数据类型 quint16_be 与 stdint.h
conflict data type quint16_be from QtEndian with stdint.h
我想使用qint16_be、quint16_be、quint32_be等作为big endian的数据类型
我正在尝试的是这样的
#include <QtEndian>
typedef quint16_be uint16_t;
我收到错误消息
C:/Qt/5.15.2/mingw81_64/include/QtCore/qendian.h:429:28: error: conflicting declaration 'typedef QBEInteger<short int> qint16_be'
typedef QBEInteger<qint16> qint16_be;
C:/Qt/Tools/mingw810_64/x86_64-w64-mingw32/include/stdint.h:38:25: note: previous declaration as 'typedef short unsigned int qint16_be'
typedef unsigned short qint16_be;
我的项目中没有包含 stdint.h。
知道我将如何解决它
我们开始:qToBigEndian():
的 MCVE
#include <QtCore>
int main()
{
const uint16_t sample = 0x0201;
QByteArray data((const char*)&sample, sizeof sample);
qDebug() << data;
const uint16_t sampleBE = qToBigEndian(sample);
QByteArray dataBE((const char*)&sampleBE, sizeof sampleBE);
qDebug() << dataBE;
}
输出:
"\x01\x02"
"\x02\x01"
我 运行 在我的英特尔笔记本电脑上使用 VS2019 中的这个示例,它具有小端架构。
分别由于qToBigEndian()
.
的调用改变了字节顺序
转换为 QByteArray
是一个快速的技巧。
然而,const uint16_t*
到 const char*
的转换是允许的(目的是访问某些东西的字节表示)。
memcpy() 是另一种允许的实现方式。
我想使用qint16_be、quint16_be、quint32_be等作为big endian的数据类型 我正在尝试的是这样的
#include <QtEndian>
typedef quint16_be uint16_t;
我收到错误消息
C:/Qt/5.15.2/mingw81_64/include/QtCore/qendian.h:429:28: error: conflicting declaration 'typedef QBEInteger<short int> qint16_be'
typedef QBEInteger<qint16> qint16_be;
C:/Qt/Tools/mingw810_64/x86_64-w64-mingw32/include/stdint.h:38:25: note: previous declaration as 'typedef short unsigned int qint16_be'
typedef unsigned short qint16_be;
我的项目中没有包含 stdint.h。 知道我将如何解决它
我们开始:qToBigEndian():
的 MCVE#include <QtCore>
int main()
{
const uint16_t sample = 0x0201;
QByteArray data((const char*)&sample, sizeof sample);
qDebug() << data;
const uint16_t sampleBE = qToBigEndian(sample);
QByteArray dataBE((const char*)&sampleBE, sizeof sampleBE);
qDebug() << dataBE;
}
输出:
"\x01\x02"
"\x02\x01"
我 运行 在我的英特尔笔记本电脑上使用 VS2019 中的这个示例,它具有小端架构。
分别由于qToBigEndian()
.
转换为 QByteArray
是一个快速的技巧。
然而,const uint16_t*
到 const char*
的转换是允许的(目的是访问某些东西的字节表示)。
memcpy() 是另一种允许的实现方式。