2012-01-08 944 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