从浮点数转换为 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的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:无法更新 JSON 列以将值从浮点数转换为整数

将 pandas 数据框列标签从浮点数转换为整数

在 C 中从浮点数转换为无符号字符

使用舍入从浮点数转换为 uint8_t

C# 隐式运算符 MyType(int value) 自动“支持”从浮点数转换

在 SQLite 上转换表达式结果,从浮点数到十进制数