那里:我有这样的声明:
typedef struct
{
quint8 mark1;
quint16 content1;
quint16 content2;
quint8 mark2;
}FrameHead;
在函数中,我定义了一个缓冲区,并重视它:
quint8 buf[40];
FrameHead *frame = (FrameHead *)buf;
frame->mark1 = 0x68;
frame->content1 = 0x3A;
frame->content1 = 0x3A;
frame->mark2 = 0x68;
所以我想,buf的前6个字节应该是“68 3A 00 3A 00 68”。但事实是,buf的前8个字节是“68 90 3A 00 3A 00 68 80”。我用的是:
qDebug() << (quint8 *)(++frame) - buf// output "8" but should be "6"
似乎数字“0x68”没有存储为quint8类型而是quint16类型以保持与其他quint16类型的一致性。任何人都遇到过同样的问题并有任何建议。