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