Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用QDataStream读取/写入原始数据_C++_Qt - Fatal编程技术网

C++ 使用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

我对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() << 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;