0Day Forums
Convert from float to QByteArray - Printable Version

+- 0Day Forums (https://0day.red)
+-- Forum: Coding (https://0day.red/Forum-Coding)
+--- Forum: C & C++ (https://0day.red/Forum-C-C)
+--- Thread: Convert from float to QByteArray (/Thread-Convert-from-float-to-QByteArray)



Convert from float to QByteArray - anitaaauycluz - 07-26-2023

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 using arrays, but this doesn't seem to work too well with `QByteArray`.

For example:

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

Can go the other way just fine using:

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


Am I just implementing this wrong or is there a better way to do it using Qt?

Thanks


RE: Convert from float to QByteArray - defeaturesongxurhtc - 07-26-2023

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


RE: Convert from float to QByteArray - croquette937 - 07-26-2023

From the [QByteArray Class Reference][1] 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.
}


[1]:

[To see links please register here]

[2]:

[To see links please register here]