查看完整版本: [-- 如何将QByteArray转换为一个双精度double数 --]

QTCN开发网 -> Qt基础编程 -> 如何将QByteArray转换为一个双精度double数 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

tanyue.esec 2020-10-20 09:03

如何将QByteArray转换为一个双精度double数

双精度浮点数是用8字节表示的,如何将8字节的QByteArray转换为double数值。

单精度的float数,我是用的以下方法转换的:
首先转换为QString,如3.1415的单精度字节,转换为16进制的字符串为str = 40490E56。
然后  int hex = str.toUInt(0, 16);
         float value = *(float*) hex;
得到了3.1415

这个方法同样用在double就不行了,而且我也没大明白,为什么通过toUInt()方法转以下就可以转成float了。
求助各位

272064949 2020-10-21 09:10
有可能uint是4字节的,double是8字节的,放不下了, 你把str.toUint(0, 16),改成str.toUlonglong(0,16)试试

tanyue.esec 2020-10-21 10:20
272064949:有可能uint是4字节的,double是8字节的,放不下了, 你把str.toUint(0, 16),改成str.toUlonglong(0,16)试试
 (2020-10-21 09:10) 

确实如此,之前我也试过用   str.toULongLong(0, 16)

但是接收的返回值用的long,可能long的长度也不够,改成qlonglong去接收就可以了

qlonglong hex = str.toULongLong(0, 16);
double dl = *(double*) &hex;


查看完整版本: [-- 如何将QByteArray转换为一个双精度double数 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled