以下是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()中的数据接收部分呢?