从float转换为QByteArray

时间:2010-05-05 14:16:48

标签: c++ c qt

是否有快速方法将浮点值转换为QByteArray中的字节(十六进制)表示?

在使用数组之前与memcpy()做过类似的事情,但这似乎与QByteArray无关。

例如:

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

可以通过其他方式使用:

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

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

由于

2 个答案:

答案 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();
相关问题