晕,标题没有写完整。
我是要把EDITbox中的话填充在一个我自己构造的数据包里面
比如我在EDITBOX中填的"1"这个数字。我希望我的包是
05 00 26 00 31 00
如果是“12”,希望的包就是05 00 26 00 31 32 00于是我写程序如下:
EDIBOX的成员变量是
int size=sizeof(m_String);
Buf[0]=0x5;
Buf[1]=0x00;
Buf[2]=0x26;
Buf[3]=0x00;
memcpy((void*)(OldBuf+4), &m_String,size);
Buf[3+size+1]=0x00;
send(s, (char *)Buf, (5+size), NULL);
出问题了,我填任合字符,发出去的都是其它字符,而并不是我填的。
请问我哪儿错了?

解决方案 »

  1.   

    你的size用错了。应该是m_String.GetLength()
      

  2.   

    sizeof()不是m_String的字符窜的长度,它返回m_String变量的存储字节,指针型的就是4字节。
    应该用int size=m_String.GetLength()
      

  3.   

    谢谢上面的两个大哥,我改了。还是有错。
    int size=m_String.GetLength()
    Buf[0]=0x5;
    Buf[1]=0x00;
    Buf[2]=0x26;
    Buf[3]=0x00;
    memcpy((void*)(Buf+4), &m_String,size);
    Buf[3+size+1]=0x00;
    send(s, (char *)Buf, (5+size), NULL);改了之后,我在框框里面填的“2”,结果发的是“h”。为什么啊?
      

  4.   

    你的&m_String应该使用m_String.GetBuffer(m_String.GetLength())
    然后m_String.ReleaseBuffer()
    首先你需要检查你发送缓冲区的内容是否已经连接正确。
      

  5.   

    是不是和 bin-endian/small-endian 有关?好像是相反的(socket 和 windows)