以下是Linux c发送的数据部分:
unsigned char buf[20];
memset(buf,0,sizeof(buf));
buf[0]=0x12;
buf[1]=0x13;
buf[2]=0x14;
buf[3]=0x7c;
buf[4]=0xfe;
buf[5]=0xe8;
buf[6]='a';
buf[7]='b';
buf[8]='c';
buf[9]=0xfc;
buf[10]=0xcf;
buf[11]=0xaa;
buf[12]=0x00;
buf[13]=0x30;
buf[14]=0x7f;
buf[15]=0x90;
send(client_fd,buf,16,0);
windows下qt tcp接受部分:
void Dialog::receiveData()
{
tcpSocket.setReadBufferSize(1024);
QByteArray ba=tcpSocket.readAll();
qDebug()<<"qbytearray"<<ba.length();//收到的字节数和发送的字节数一样,即使中间字节ascci值为0;
for(int n=0;n<ba.length();n++)
//qDebug("ba[%d]:%d",n,ba[n]);//程序运行错误
qDebug()<<ba[n];
if(ba[0]-0x12== 0)
qDebug("======0");
if(ba[1]-0x13==0)
qDebug("======1");
if(ba[2]-0x14==0)
qDebug("======2");
if( ba[3]-0x7c== 0)
qDebug("======3");
if( ba[3]-0x7c== 0)
qDebug("======3--1");
if( ba[4]-0xfe==0 )//这个也没有正确判断出来
qDebug("======45");
if(ba[14]==0x31)//内存中的数值好像并不完全和预期一样
qDebug("======14");
if(ba[12]==0x00)
qDebug("======12");
if(ba[14]==0x7f)
qDebug("======14n");
if(ba[15]==0x90)
qDebug("======15n");
}
为什么这些数据不能正确地接受判断出来呢?或者qt应如何写void Dialog::receiveData()中的数据接收部分呢?