• 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();
    }

  • 相关阅读:
    Python列出一个文件夹下的所有文件tif文件
    初学者必读:如何使用 Nuxt 中间件简化网站开发
    Stanford CS143 速通PA2教程
    mysql8.0英文考试第1-5题
    C/C++ 深入浅出C++模板(上)
    内网渗透-Earthworm的简单使用(内网穿透工具)
    郑州大学编译原理实验四LR(0)分析算法JAVA
    【USB声卡】magic_uac 开发板介绍
    WebKit Inside: DOM树的构建
    新生儿吐奶的原因以及处理方法,非常实用(建议收藏)
  • 原文地址:https://blog.csdn.net/weixin_39926429/article/details/137933816