svrrcvlen=svrsocket->Receive(svrrcvbuf,2048); 
CString str;
str = svrrcvbuf;
AfxMessageBox(str);我收到内容放到svrrcvbuf现在想显示出来成16进制的数据,但转换的不对,如何才能显示出来收到的内容!(肯定有数据因为svrrcvlen>0了!)

解决方案 »

  1.   

    char *pHex = new char[str.GetLength() * 2 + 1];
    for(int i = 0; i < str.GetLength(); i ++)
    {
    sprintf(&pHex[i * 2], "%x", str.GetAt(i));
    }
    AfxMessageBox(pHex);
    delete []pHex;
      

  2.   

    CString strMsg=_T(""), strTemp;
    CString strRcv;for(int i=0; i<strRcv.GetLength(); i++)
    {
      strTemp.Format(_T("%02X"), strRcv.GetAt(i);
      strMsg += strTemp;
    }AfxMessageBox(strMsg);
      

  3.   

    第一种方法出现一堆乱码:
    "妄葺葺葺葺葺u"第二种方法什么也不出现?
    void CIsmgDlg::SVRReceiveData(SVRSocket *svrsocket)

    svrrcvlen=svrsocket->Receive(svrrcvbuf,2048); 
    //这里执行上面两种方法!
    }
    这里svrrcvbuf它的值为char[],我直接负的cstring str=svrrcvbuf;了!
    但不正确显示,当执行完上面这句话,应该是有数据在这里面了!
    不知是哪里问题!
      

  4.   

    svrrcvlen=svrsocket->Receive(svrrcvbuf,2048); 
    //CString str;
    //str = svrrcvbuf;
    char *pHex = new char[str.GetLength() * 2 + 1];
    for(int i = 0; i < svrrcvlen; i ++)
    {
    sprintf(&pHex[i * 2], "%x", svrrcvbuf[i]);
    }
    AfxMessageBox(pHex);
    delete []pHex;//AfxMessageBox(str);
      

  5.   

    svrrcvlen=svrsocket->Receive(svrrcvbuf,2048); 
    //CString str;
    //str = svrrcvbuf;
    char *pHex = new char[svrrcvlen* 2 + 1];
    for(int i = 0; i < svrrcvlen; i ++)
    {
    sprintf(&pHex[i * 2], "%x", svrrcvbuf[i]);
    }
    AfxMessageBox(pHex);
    delete []pHex;//AfxMessageBox(str);
      

  6.   

    还是出现上面那东西?
    发过来的数据用结构接收时还可以得到想要的数据
    command_id = ntohl(CMPPData->head.command_id);
    这个command_id 是可以判断出来的!
      

  7.   

    svrrcvlen=svrsocket->Receive(svrrcvbuf,2048); 
        CString strRcv;
        strRcv = svrrcvbuf;
        afxmessagebox(strrcv);
    这样什么也没有,是不是不应该