![]() |
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] |