当前位置: 代码迷 >> QT开发 >> 请问一个关于QByteArray输入输出的有关问题
  详细解决方案

请问一个关于QByteArray输入输出的有关问题

热度:217   发布时间:2016-04-25 02:54:00.0
请教一个关于QByteArray输入输出的问题
楼主有一个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 一文,里面就是你要的答案