情景:我现在要接收一个UDP发送的报文,【报文头】【数据区】。数据区里就一个REAL类型4个字节的信号,现在我要用Qt creater来接收这个数据。
ByteArray buf;
buf.resize(socket->pendingDatagramSize());
quint16 port =2000;
QHostAddress ip;
//接受信息
//quint64 len = socket->readDatagram(buf,sizeof(buf),&ip,&port);
quint64 len = socket->readDatagram(buf.data(),buf.size(),&ip,&port);
QByteArray a = buf.toHex();
if(len>0){
QString str =QString("[%1:%2]%3")
.arg(ip.toString())
.arg(port)
.arg(a.data());
QDataStream dataStream(buf);
dataStream.setByteOrder(QDataStream::LittleEndian);
quint16 ushortValue1,ushortValue2;
dataStream >> ushortValue1>>ushortValue2;
QString ushortString1 = QString::number(ushortValue1);
QString ushortString2 = QString::number(ushortValue2);
str+=ushortString1.toUtf8()+"."+ushortString2.toUtf8();
quint32 intValue;
dataStream >> intValue;
QString intString = QString::number(intValue);
str+="."+intString.toUtf8()+":";
qreal v6;
dataStream>>v6;
qDebug()<<v6 << "v6:" << dataStream.device()->pos();;
str+=+"&"+QString::number(v6,'f',3);
我要将REAL类型的二进制数据存到v6里,但是现在显示的v6的值是0。这是为什么?