我在tcpsever接收数据,是二进制数据流,我用qbytearray接收,toHex转成十六进制存到qString了,之后其中的短整形用toUshort正常转换,但是浮点数使用toFloat就不行了,大神们谁有好方法,将十六进制qString转换成float或者还是用二进制的qbytearray直接转化为float?求教!!!
QByteArray a=socket->readAll();
QString b=a.left(1).toHex();//这是一个字节的整形
QString c=a.right(4).toHex();//这是四字节的浮点
bool ok;
usigned short day=b.toUShort(&ok,16);
float slope=c.toFloat(&ok);
输出时,day是正常整数,slope就是乱码了。
重新走了一遍,发现乱码是中间汉字的问题,所有浮点数输出都是0,为什么?难道是大小尾端?
怎么没人啊,不科学啊。
我修改了代码,使用int强制转换,正数的浮点数显示正常,但是对于负数的浮点数仍然显示是0,有什么办法么。将负值的四豁字节浮点数转换为float