从float转换为QByteArray

有没有快速的方法将浮点值转换为QByteArray的字节(hex)表示?

在使用数组之前使用memcpy()做了类似的事情,但这对QByteArray似乎不太好用。

例如:

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

可以通过其他方式使用:

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

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

谢谢

从QByteArray类参考页面:

 float f = 0.0f; QByteArray array(reinterpret_cast(&f), sizeof(f)); 

将使用存储在其中的float的内存内容初始化QByteArray

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

 array.append(reinterpret_cast(&f), sizeof(f)); 

也应该这样做。

反过来说,你只需要执行相反的操作:

 float f2; if (array.size() >= sizeof(f2) { f2 = *reinterpret_cast(array.data()); } else { // The array is not big enough. } 

我不确定你到底想要什么。

要将二进制表示填充到QByteArray中,您可以使用:

 float f = 0.0f; QByteArray ba(reinterpret_cast(&f), sizeof (f)); 

要获得浮点数的hex表示,您可以添加:

 QByteArray baHex = ba.toHex();