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

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

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

//在QT6.2.4 MSVC2019 调试通过

#include <QCoreApplication>

#include <QByteArray>
#include <QDebug>
#include <QElapsedTimer>

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()<<m;                              //辅助观察转换前第6行,非必须
    }                                                        //辅助观察转换前第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()<<m;
    }

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

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

相关推荐

  1. QT c++ 点数数组转换 QByteArray

    2024-04-22 12:18:05       17 阅读
  2. QT c++ 双精度点数转换4个16位数

    2024-04-22 12:18:05       32 阅读
  3. STM32 float点数转换四个字节

    2024-04-22 12:18:05       8 阅读
  4. QT——数据转换(int/QString/QByteArray/char/string)等

    2024-04-22 12:18:05       36 阅读
  5. Qt 点数比较大小

    2024-04-22 12:18:05       36 阅读
  6. Qt之字节数组QByteArray

    2024-04-22 12:18:05       40 阅读
  7. 系统语言德语时点数转化问题

    2024-04-22 12:18:05       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-22 12:18:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-22 12:18:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-22 12:18:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-22 12:18:05       18 阅读

热门阅读

  1. 算法训练营day14

    2024-04-22 12:18:05       13 阅读
  2. css常见动画

    2024-04-22 12:18:05       12 阅读
  3. 开发语言漫谈-Object C

    2024-04-22 12:18:05       12 阅读
  4. [leetcode] 946. 验证栈序列

    2024-04-22 12:18:05       13 阅读
  5. python scrapy 爬取豆瓣电影top250教程2

    2024-04-22 12:18:05       12 阅读
  6. 流量控制和差错控制

    2024-04-22 12:18:05       9 阅读
  7. 动规之377. 组合总和 Ⅳ

    2024-04-22 12:18:05       8 阅读
  8. 买卖股票的最佳时机

    2024-04-22 12:18:05       9 阅读
  9. docker入门

    2024-04-22 12:18:05       12 阅读