[英]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.