Convert from float to QByteArray

后端 未结 2 995
慢半拍i
慢半拍i 2021-01-02 23:16

Is there a quick way to convert a float value to a byte wise (hex) representation in a QByteArray?

Have done similar with memcpy() before u

相关标签:
2条回答
  • 2021-01-03 00:02

    From the QByteArray Class Reference page:

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

    Will initialize a QByteArray with the memory content of the float stored in it.

    If you already have one and just want to append the data to it:

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

    Should do it as well.

    To go the other way around, you just have to perform the reverse operation:

    float f2;
    
    if (array.size() >= sizeof(f2)
    {
      f2 = *reinterpret_cast<const float*>(array.data());
    } else
    {
      // The array is not big enough.
    }
    
    0 讨论(0)
  • 2021-01-03 00:18

    I'm not sure what you want exactly.

    To stuff the binary representation into a QByteArray you can use this:

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

    To get a hex representation of the float you can add this:

    QByteArray baHex = ba.toHex();
    
    0 讨论(0)
自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题