有没有一种快速的方法将浮点值转换为一个字节方式(十六进制)表示QByteArray?
memcpy()在使用数组之前做过类似的事情,但这似乎并没有太好用QByteArray.
例如:
memcpy(&byteArrayData,&floatData,sizeof(float));
Run Code Online (Sandbox Code Playgroud)
可以通过其他方式使用:
float *value= (float *)byteArrayData.data();
Run Code Online (Sandbox Code Playgroud)
我只是实现了这个错误,还是有更好的方法来使用Qt?
谢谢
ere*_*eOn 19
从QByteArray类参考页面:
float f = 0.0f;
QByteArray array(reinterpret_cast<const char*>(&f), sizeof(f));
Run Code Online (Sandbox Code Playgroud)
将QByteArray使用存储在其中的float的内存内容初始化a .
如果您已经有一个并且只想将数据附加到它:
array.append(reinterpret_cast<const char*>(&f), sizeof(f));
Run Code Online (Sandbox Code Playgroud)
也应该这样做.
换句话说,你只需执行相反的操作:
float f2;
if (array.size() >= sizeof(f2)
{
f2 = *reinterpret_cast<const float*>(array.data());
} else
{
// The array is not big enough.
}
Run Code Online (Sandbox Code Playgroud)
我不确定你到底想要什么。
要将二进制表示形式填充到 QByteArray 中,您可以使用以下命令:
float f = 0.0f;
QByteArray ba(reinterpret_cast<const char *>(&f), sizeof (f));
Run Code Online (Sandbox Code Playgroud)
要获得浮点数的十六进制表示,您可以添加以下内容:
QByteArray baHex = ba.toHex();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11281 次 |
| 最近记录: |