使用联合体,可以有效解决float,double在传输过程中出现数据差问题

union U1
{
    float bar;
    char ch[4];
}DataBar;

DataBar.bar = 71.234;
QByteArray array(DataBar.ch, 4);
qDebug() << array.toHex();

在做工控机的时候,很多时候用到modbus协议,传输的数据也会用到float,double类型,可以采用上诉方法取出float每个字节,然后进行传输,在接收端可以这么写,这样可以有效避免传输出现数据差

union U1
{
    float bar;
    char ch[4];
}DataBar;

DataBar.ch[0] = buf[n];
DataBar.ch[1] = buf[n + 1];
DataBar.ch[2] = buf[n + 2];
DataBar.ch[3] = buf[n + 3];

qdebug() << DataBar.bar;

猜你喜欢

转载自blog.csdn.net/qq_36809882/article/details/106347913