当前位置:   article > 正文

QT中结构体和QbyteArray的转换,可加帧头帧尾

QT中结构体和QbyteArray的转换,可加帧头帧尾

demo源码:

  1. #include <QApplication>
  2. #include <QDebug>
  3. #include <QByteArray>
  4. // 头
  5. typedef struct tagEXT_HEADER
  6. {
  7. unsigned short type = 0x5642;
  8. }EXT_HEADER;
  9. // 数据包格式
  10. typedef struct tagMsgFormat
  11. {
  12. EXT_HEADER header;
  13. uint8_t msgId = 0x00;
  14. uint8_t msgNum= 0;
  15. uint16_t payloadLen = 0;
  16. // payload; // 长度不固定
  17. }MsgFormat;
  18. int main(int argc, char *argv[])
  19. {
  20. // 创建结构体数据
  21. EXT_HEADER header;
  22. MsgFormat format;
  23. format.msgId = 0x20;
  24. format.msgNum= 99;
  25. format.payloadLen = 16;
  26. // 直接导入QByteArray数据
  27. QByteArray data = QByteArray::fromStdString("\x01\x02\x03\x04\x05\x06");
  28. qDebug()<< "data:" << data.toHex();
  29. // 结构体转QByteArray数据
  30. QByteArray frame = QByteArray((char *)&header, sizeof(EXT_HEADER));
  31. qDebug()<< "frame:" << frame.toHex();
  32. // 修改结构体数据,然后转QByteArray数据
  33. header.type = 0x3412;
  34. QByteArray frame2 = QByteArray((char *)&header, sizeof(EXT_HEADER));
  35. qDebug()<< "frame2:" << frame2.toHex();
  36. // 嵌套式结构体转QByteArray数据
  37. QByteArray frame3 = QByteArray((char *)&format, sizeof(MsgFormat));
  38. qDebug()<< "frame3:" << frame3.toHex();
  39. // QByteArray数据转嵌套式结构体
  40. MsgFormat *cmd = (MsgFormat*)frame3.data();
  41. qDebug()<<"";
  42. qDebug()<<"frame3转为结构体之后的数据:";
  43. qDebug()<< "header:" << cmd->header.type;
  44. qDebug()<< "msgId:" << (uint8_t)(cmd->msgId);
  45. qDebug()<< "msgNum:" << cmd->msgNum;
  46. qDebug()<< "palyloadLen:" << cmd->payloadLen;
  47. // QByteArray数据只取帧头
  48. EXT_HEADER *cmdHeader = (EXT_HEADER*)frame3.data();
  49. qDebug()<< "header:" << cmdHeader->type;
  50. return 0;
  51. }

打印结果

  1. data: "010203040506"
  2. frame: "4256"
  3. frame2: "1234"
  4. frame3: "425620631000"
  5. frame3转为结构体之后的数据:
  6. header: 22082
  7. msgId: 32
  8. msgNum: 99
  9. palyloadLen: 16
  10. header: 22082

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/216398?site
推荐阅读
相关标签
  

闽ICP备14008679号