从浮点数转换为 QByteArray
Posted
技术标签:
【中文标题】从浮点数转换为 QByteArray【英文标题】:Convert from float to QByteArray 【发布时间】:2010-05-05 14:16:48 【问题描述】:有没有一种快速的方法可以将浮点值转换为QByteArray
中的字节(十六进制)表示?
在使用数组之前已经对memcpy()
做过类似的事情,但这似乎对QByteArray
不太有效。
例如:
memcpy(&byteArrayData,&floatData,sizeof(float));
可以使用其他方式很好地使用:
float *value= (float *)byteArrayData.data();
我只是实现了这个错误还是使用 Qt 有更好的方法?
谢谢
【问题讨论】:
【参考方案1】:来自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.
【讨论】:
【参考方案2】:我不确定你到底想要什么。
要将二进制表示填充到 QByteArray 中,您可以使用:
float f = 0.0f;
QByteArray ba(reinterpret_cast<const char *>(&f), sizeof (f));
要获得浮点数的十六进制表示,您可以添加以下内容:
QByteArray baHex = ba.toHex();
【讨论】:
以上是关于从浮点数转换为 QByteArray的主要内容,如果未能解决你的问题,请参考以下文章