大家好,首先我是网络编程的新手,所以也许这是一个简单的问题,但我不明白。我尝试使用 tcp 套接字向微控制器发送 6 个字节。为了序列化我的数据,我使用了 qdatastream 和 qbytearray。这就是我尝试这样做的方式:
QByteArray buffer;
QDataStream outputStream(&buffer, QIODevice::WriteOnly);
outputStream.setVersion(QDataStream::Qt_5_8);
outputStream << (quint8) 0
<< (quint8) dataMessage.prefix
<< (quint8) dataMessage.paramID
<< (quint32) dataMessage.data;
outputStream.device()->seek(0);
outputStream << (quint8)(buffer.size() - sizeof(quint8));
qDebug() << buffer;
qDebug() << quint32(dataMessage.data);
sock->write(buffer);
if(sock->write(buffer) == -1)
{
return -1;
}
sock->flush();
例如,我的 struct dataMessage 看起来像这样: dataMessage={15,1,9400000} 在我的缓冲区中,我希望这个字节序列 "\x06\xF0\x01\x00\x8F\6E\xC0" 但我总是得到以下信息输出“\x06\xF0\x01\x00\x8Fn\xC0”。
我究竟做错了什么?