簡體   English   中英

Qt-如何將QByteArray轉換為結構

[英]Qt-how to convert a QByteArray to struct

我需要將QByteArray轉換為結構。 我有這樣的結構:

   struct mavlink_attitude_t
      {
          /// <summary> Timestamp (milliseconds since system boot) </summary>
            quint32 time_boot_ms;
              /// <summary> Roll angle (rad, -pi..+pi) </summary>
            float roll;
              /// <summary> Pitch angle (rad, -pi..+pi) </summary>
            float pitch;
              /// <summary> Yaw angle (rad, -pi..+pi) </summary>
            float yaw;
              /// <summary> Roll angular speed (rad/s) </summary>
            float rollspeed;
              /// <summary> Pitch angular speed (rad/s) </summary>
            float pitchspeed;
              /// <summary> Yaw angular speed (rad/s) </summary>
            float yawspeed;

      };

我有一個QbyteArray來自串行端口。 我已經使用過union,但是我認為它不能用於QByteArray 還有其他辦法嗎? 一個例子真的有幫助。

您可以投射它:

QByteArray arr;
mavlink_attitude_t* m = reinterpret_cast<mavlink_attitude_t*>(arr.data());

接受的響應無效。 .data()以null終止。
您有浮點數和整數,請使用向左移動。
例:

mavlink_attitude_t.time_boot_ms = (bytearray.at(0) & 0xFFFF)      |
                                  (bytearray.at(1) & 0xFFFF) << 8 |
                                  (bytearray.at(2) & 0xFFFF) << 16|
                                  (bytearray.at(3) & 0xFFFF) << 24

如果使用Little endian,則反索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM