代码之家  ›  专栏  ›  技术社区  ›  radix07

从float转换为qbytearray

qt c c++
  •  5
  • radix07  · 技术社区  · 15 年前

    QByteArray ?

    做过类似的事情 memcpy() 在使用数组之前,但这似乎不太适用于 QBYTAR射线 .

    例如:

    memcpy(&byteArrayData,&floatData,sizeof(float));
    

    可以走另一条路,只要使用:

    float  *value= (float *)byteArrayData.data();
    

    我只是实现这个错误还是有更好的方法来使用qt?

    谢谢

    2 回复  |  直到 13 年前
        1
  •  18
  •   ereOn    13 年前

    QByteArray Class Reference 页:

    float f = 0.0f;
    QByteArray array(reinterpret_cast<const char*>(&f), sizeof(f));
    

    将初始化 QByteArray 其中存储了浮点的内存内容。

    如果您已经有一个并且只想将数据附加到其中:

    array.append(reinterpret_cast<const char*>(&f), sizeof(f));
    

    也应该这么做。

    相反,您只需执行反向操作:

    float f2;
    
    if (array.size() >= sizeof(f2)
    {
      f2 = *reinterpret_cast<const float*>(array.data());
    } else
    {
      // The array is not big enough.
    }
    
        2
  •  3
  •   CMircea    15 年前

    我不知道你到底想要什么。

    要将二进制表示填充到qbytearray中,可以使用以下命令:

    float f = 0.0f;
    QByteArray ba(reinterpret_cast<const char *>(&f), sizeof (f));
    

    要获取浮点的十六进制表示,可以添加以下内容:

    QByteArray baHex = ba.toHex();