• QT c++ 将浮点数数组转换成 QByteArray


    //上一篇文章,描写了怎么将数据已字节数组的形式写到Sqlite 数据库,那么。

    //本文描述2种方法将浮点数数组转换为字节数组QByteArray

    //在QT6.2.4 MSVC2019 调试通过

    #include

    #include
    #include
    #include

    union FloatSplit//本union是为了观察转换前和转换后各字节的数是否一样,非必须
    {
        float floatValue; // 浮点数
        struct {
            uint8_t  Byte0;
            uint8_t  Byte1;
            uint8_t  Byte2;
            uint8_t  Byte3;
        } sFloatValues;       // 结构体,包含4个8位符号整数
        uint8_t Uint8Array[4];
    };
     

    static void func2()
    {
        const int len=1;
        float f1_array[len];
          f1_array[0]=10.111;

    //-----------------------------------------------------------------------------

        FloatSplit temp;                                  //辅助观察转换前第1行,非必须
        temp.floatValue=10.111;                     //辅助观察转换前第2行,非必须
        for (int var = 0; var < len*4; ++var)     //辅助观察转换前第3行,非必须
        {                                                         //辅助观察转换前第4行,非必须
            uint8_t m=temp.Uint8Array[var];   //辅助观察转换前第5行,非必须
            qDebug()<     }                                                        //辅助观察转换前第7行,非必须


        qDebug()<<"--------------";                 //辅助观察转换前第7行,非必须

    //----------------------------------------------------------------------------------

        QByteArray ba;

        //------------------------------------------------------------------------------

        //-----------这一段注释的代码是转换方法1----------------------
        // uint8_t* pt;                          
        // pt =(uint8_t*)f1_array;
        // ba.clear();
        // for (int var = 0; var < len*4; ++var)
        // {
        //     unsigned short a=*(uint8_t*)pt;
        //     ba.append(a);
        //     pt++;
        // }

        //-------------------------------------------------------------------------------------

        //------------------转换方法2,qt的简化方法-------------------------------
        ba.resize(len* sizeof(float)); // 确保QByteArray有足够的空间
        memcpy(ba.data(), f1_array, len*4);

        //memcpy(ba.data(), f1_array,len* sizeof(float));//可以代替上行

       //-----------------------------------------------------------------------------------

      //---------------------这段代码是为了观察转换后的-------------------
        for (int var = 0; var < len*4; ++var)
        {
            uint8_t m=ba[var];
            qDebug()<     }

      //-----------------------------------------------------------------------------------
    }

    int main(int argc,char* argv[])
    {
        QCoreApplication a(argc, argv);
        QElapsedTimer t;
        t.start();
        //func();
        func2();
        qDebug()<     return a.exec();
    }

  • 相关阅读:
    河北保定鱼米之乡重现 国稻种芯·中国水稻节:雄安新区稻田
    图解 ARP协议工作流程
    Java架构师基础框架设计
    字符串
    Julia累加和累乘
    ​Mysql数据库查询好慢,除了索引,还能因为什么?
    日期时间格式字符串“yyyy-MM-dd HH:mm:ss“的意思
    opengles 绘制图元 ——glDrawArrays() 相关API介绍 (十)
    MyBatis-Plus 入门与实践
    ASTM标准涵盖哪些产品类别?出口美国的产品做ASTM认证需要注意哪些事项?
  • 原文地址:https://blog.csdn.net/weixin_39926429/article/details/137933816