2012-01-08 25 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文字(2進ゼロ)で始まる文字列を印刷しようとしています。 qDebug()はほとんど何も印刷しません。\0は文字列ターミネータです。

しかし、あなたのコードにバグがあります、あなたがやるべきこと:代わりにresizeコールの

byteArray.fill(0, 3); 

、そうでなければ、最初のバイトのランダムなデータを取得します。

+3

バイナリデータを出力するには、QByteArray :: toHex() –

+0

を使用できます。ToHex()は非常に便利です – Dcow

関連する問題