• 利用memcpy函数实现float到QByteArray的相互转化


    一.为什么要实现float到QByteArry之间的相互转化

    在总线通讯过程中(例如串口通讯),总线上传输的是字节数组变量,即ByteArray型的变量,在Qt中即为QbyteArray型变量。总线发送数据时要将数据转化为QbyteArray再发送,接收数据后要将收到的QByteArray转化为所需的变量类型(如float型变量)。

    memcpy函数是c++中对变量内存进行操作的函数,可以实现ByteArray与不同数据类型之间的相互转化。

    二.具体操作

    (1)QByteArray转化为float

    [html] view plain copy
     
    1. float curveData[14];  
    2. QByteArray inputdata;  //需要提前给inputdata赋值      
    3. memcpy(&curveData,inputdata,56);  

    更一般化(将QByteArray转化为float数组):

    [html] view plain copy
     
    1. QByteArray inputdata;    //需要提前给inputdata 赋值  
    2. float curveData[14];  
    3. memcpy(&curveData,inputdata,sizeof(curveData));  



    (2)   float转化为QByteArray

    [cpp] view plain copy
     
    1. QByteArray outputdata;  
    2. float currentData;  //variables need to be in  
    3. outputdata.resize(sizeof(currentData));    //重新调整QByteArray的大小  
    4. memcpy(outputdata.data(),&currentData,sizeof(currentData));  

    将float数组转化为QByteArray

    [cpp] view plain copy
     
      1. QByteArray outputdata;  
      2. float currentData[3];  //变量需要提前被赋值  
      3. outputdata.resize(sizeof(currentData));  
      4. memcpy(outputdata.data(),&currentData,sizeof(currentData));  

    转自:https://blog.csdn.net/qq_28093585/article/details/78237451

  • 相关阅读:
    《最优化导论》-8梯度方法
    《最优化导论》-7一维搜索方法
    《最优化导论》-6集合约束和无约束优化问题基础
    ubuntu set up 3
    ubuntu set up 2
    ubuntu set up 1
    Xavier and Kaiming Initialization
    Network Initialization: Fan-in and Fan-out
    The Softmax function and its derivative
    GNU Screen使用
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/9122309.html
Copyright © 2020-2023  润新知