C++ 使用QDataStream读取/写入原始数据
我对QDataStream和Socket编程相当陌生,我想做的是简单地从客户端向主机发送一个quint32头值(四个字节)。但是我在QDataStream上遇到了一些问题C++ 使用QDataStream读取/写入原始数据,c++,qt,C++,Qt,我对QDataStream和Socket编程相当陌生,我想做的是简单地从客户端向主机发送一个quint32头值(四个字节)。但是我在QDataStream上遇到了一些问题 QByteArray data; QDataStream ds(&data, QIODevice::ReadWrite); int a = htonl(32); char *head = (char*)&a; for(int i=0;i<4;i++) qDebug() << QStri
QByteArray data;
QDataStream ds(&data, QIODevice::ReadWrite);
int a = htonl(32);
char *head = (char*)&a;
for(int i=0;i<4;i++)
qDebug() << QString::number(int((head[i]&0xff))+0x100, 16) << " ";
qDebug() << endl;
QByteArray数据;
QDataStream ds(&data,QIODevice::ReadWrite);
INTA=htonl(32);
字符*头=(字符*)&a;
对于(int i=0;i在尝试使用ds.readRawData()
读取数据之前,应通过调用ds.device()->reset();
重置流设备的位置
ds.readRawData()
将返回读取的字节数。如果您检查它,它可能会返回0
当您在网络上处理原始字节时,您应该使用,以及uint32\u t、uint8\u t和朋友。依靠int
和long
来保持理智是疯狂的。我已经尝试了'uint32\u t a=hton'l(32)”,但结果仍然是一样的。。。
ds.writeRawData(head, 4);
char *buffer = new char[4];
ds.readRawData(buffer, 4);
for(int i=0;i<4;i++)
qDebug() << QString::number(int((buffer[i]&0xff))+0x100, 16) << " ";
qDebug() << endl;