楼主有一个QByteArray byteArrayOlod,里边存的是“ABCD”四个字符,为了适应需求,需要给这四个字符前边加一个报文头,两个int型的数,组装出一个心得QByteArray byteArrayNew。我用了两种方法得到两种大小的New,请大侠解释下我执行语句的异同。在此都用到了QDataStream来操作这个byteArray。
void CMainWindow::slotClientReadData(QByteArray &byteArray1, int nPort)
{
QByteArray byteArray;
QDataStream dataStream(&byteArray, QIODevice::WriteOnly);
//组装给busout的信息报文
int nTemp;
nTemp = REPORT_TYPE_DATA;
dataStream << nTemp;
nTemp = nPort;
dataStream << nTemp;
//没有根据
dataStream << byteArray1;
m_pTcpSocketToOut->write(byteArray);
}
得到的新byteArray是size是16
另外一种用apend
void CMainWindow::slotClientReadData(QByteArray &byteArray1, int nPort)
{
QByteArray byteArray;
QDataStream dataStream(&byteArray, QIODevice::WriteOnly);
//组装给busout的信息报文
int nTemp;
nTemp = REPORT_TYPE_DATA;
dataStream << nTemp;
nTemp = nPort;
dataStream << nTemp;
//没有根据
//dataStream << byteArray1;
byteArray.append(byteArray1);
m_pTcpSocketToOut->write(byteArray)
}
第二种byteArray的size是12。求指导
------解决思路----------------------
打开Manual 找到 Serializing Qt Data Types 一文,里面就是你要的答案