如何在服务器端将一个整数(32位int型)写入字字流中,在客户端将其正确的解析出来?急,在线等立即给分!!

解决方案 »

  1.   

    最简单的方法:发送方:……
    int i=123456;
    int *pi=&i;
    //第一个参数强制类型转换,第二个参数是字节数
    XXXXXXX.send((byte *)pi,sizeof(int));
    ……接收方:
    byte pBuf[4];
    XXXXXXX.Receive(pBuf,4);
    //强制类型转换
    int *pi=(int)pBuf
    //得到32为的i(你的操作系统是32位这个i就是32位)
    int i=*pi;
      

  2.   

    最简单的方法:(修改一下)发送方:……
    int i=123456;
    int *pi=&i;
    //第一个参数强制类型转换,第二个参数是字节数
    XXXXXXX.send((byte *)pi,sizeof(int));
    ……接收方:
    ……
    byte pBuf[4];
    XXXXXXX.Receive(pBuf,4);
    //强制类型转换
    int *pi=(int*)pBuf//得到32为的i(你的操作系统是32位这个i就是32位)
    int i=*pi;
    ……
      

  3.   

    DWORD i;//32位i = 12345;XX.send((byte *)&i, sizeof(i));不知道可不可以
      

  4.   

    写入字节流
    PBYTE pk;
    int input1=123456,input2=345678;
    int *p1
    p1=&input1;
    memcpy(pk,p1,4);
    pk+=4;
    p1=&input2;
    memcpy(pk,p1,4);读出字节流
    PBYTE pk;
    output1=static_cast<int>(*pk); 
    pk+=4;
    output2=static_cast<int>(*pk);当整数input1小于256时编码和解码正常,大于256时output1以256取模,始终小于256。
      

  5.   

    你的pk没分配空间,是个空指针
    你把PBYTE pk;换成 BYTE pk[10];试试
      

  6.   

    对不起,搞错了! 你的问题在于pk 是个PBYTE,所以*pk 的值是一个BYTE当然不能大于256了
    读出字节流
    PBYTE pk;
    output1=*(static_cast<int*>(pk)); 
    pk+=4;
    output2=*(static_cast<int*>(pk));
      

  7.   

    PBYTE pk = new BYTE[12];
    PBYTE pTemp = pk; int input1 = 123456, input2 = 345678;
    int *p1; p1 = &input1;
    memcpy(pTemp, p1, 4);
    pTemp += 4;
    p1 = &input2;
    memcpy(pTemp, p1, 4);
    pTemp = pk;
    cout << *((int*)pTemp) << endl;
    pTemp += 4;
    cout << *((int*)pTemp) << endl;就可以了。