2012-01-08 4 views
2

프레임으로 4 바이트를 QByteArray에 추가해야합니다. (구조체 ([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

관련 문제