是否有快速方法将浮点值转换为QByteArray
中的字节(十六进制)表示?
在使用数组之前与memcpy()
做过类似的事情,但这似乎与QByteArray
无关。
例如:
memcpy(&byteArrayData,&floatData,sizeof(float));
可以通过其他方式使用:
float *value= (float *)byteArrayData.data();
我只是实现了这个错误,还是有更好的方法来使用Qt?
由于
答案 0 :(得分:18)
来自QByteArray Class Reference页面:
float f = 0.0f;
QByteArray array(reinterpret_cast<const char*>(&f), sizeof(f));
将使用存储在其中的浮动内存内容初始化QByteArray
。
如果您已经有一个并且只想将数据附加到它:
array.append(reinterpret_cast<const char*>(&f), sizeof(f));
也应该这样做。
反过来说,你只需执行相反的操作:
float f2;
if (array.size() >= sizeof(f2)
{
f2 = *reinterpret_cast<const float*>(array.data());
} else
{
// The array is not big enough.
}
答案 1 :(得分:3)
我不确定你到底想要什么。
要将二进制表示填充到QByteArray中,您可以使用:
float f = 0.0f;
QByteArray ba(reinterpret_cast<const char *>(&f), sizeof (f));
要获得浮点数的十六进制表示,您可以添加:
QByteArray baHex = ba.toHex();