2012-01-08 1269 views
2

我需要添加到一个QByteArray作为帧的4个字节。 (结构([4个字节] [消息))Qt QByteArray大小

我做的:

QByteArray byteArray; 
QByteArray byteArray2(man.SerializeAsString().c_str(), man.ByteSize()); // 31 byte 
qDebug()<<byteArray.size()<<"size"; // 0 bytes 
byteArray.resize(3); 
qDebug()<<byteArray.size()<<"size"; // 3, ok 
byteArray.append(man.ByteSize()); 
qDebug()<<byteArray.size()<<"size"; // 4 
byteArray2.prepend(byteArray);  
qDebug()<<byteArray2.size()<<"size"; // return 35, ok 
qDebug()<<(byteArray2); // not print my message 

对不起,我的英语。

回答

0

您试图打印一个字符串(应该)以\0个字符(二进制零)开始。 qDebug()很可能不会打印任何东西 - \0是一个字符串终止符。

但在你的代码中的错误,你应该做的:

byteArray.fill(0, 3); 

代替resize通话,否则你会在第一时间拿到字节的随机数据。

+3

要打印二进制数据,可以使用QByteArray :: toHex() – 2012-01-08 13:17:46

+0

谢谢,ToHex()非常有用 – Dcow 2012-01-08 19:11:24