网上下了一个程序,其中有个Data类,是用于发送消息的发送数据类:头文件:
class CData  
{
public:
CData();
virtual ~CData();
_TCHAR szBuf[DataBufLength];
int num;
BYTE index;                //消息
// DWORD MyNumber;
DWORD This;
BYTE wIndex;               //发送窗口
virtual void PackToBuf();
virtual BOOL LoadFromBuf();
UINT tarIP;
UINT nPort;
CString MyNumber;
BYTE  pIndex;
protected:
int BP; //buffer pointer
};.cpp文件
#include "stdafx.h"
#include "Data.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////CData::CData()
{
memset(szBuf,0,sizeof(szBuf));
num=0;
tarIP=0;
nPort=0;
wIndex=0;
}CData::~CData()
{}
void CData::PackToBuf()
{
BP=0;
szBuf[BP++]=index;
*((DWORD*)(szBuf+BP))=This;
BP+=sizeof(DWORD);
*(szBuf+BP)=wIndex;
BP++;
*(szBuf+BP)=pIndex;
BP++;
WORD sLen=MyNumber.GetLength();
*((WORD*)(szBuf+BP))=sLen;
BP+=sizeof(WORD);

if(sLen>0)
{
_tcscpy(szBuf+BP,MyNumber.GetBuffer(MyNumber.GetLength()));
BP+=sLen;
}
num=BP;
}
BOOL CData::LoadFromBuf()
{
BP=0;
index=szBuf[BP++];
This=*((DWORD*)(szBuf+BP));
BP+=sizeof(DWORD);
wIndex=*(szBuf+BP);
BP++;
pIndex=*(szBuf+BP);
BP++;
WORD sLen=0;
sLen=*((WORD*)(szBuf+BP));
BP+=sizeof(WORD);
if(sLen>0&&BP+sLen<=num)
{
CString msg(szBuf+BP,sLen);
MyNumber=msg;
BP+=sLen;
}
else if(sLen==0) 
{
MyNumber="";
}
else
{
return FALSE;
}
if(BP<=num) return TRUE;
return FALSE;
}
请大虾们告诉小妹,在PackToBuf()和LoadFromBuf()中的代码是什么意思?要实现的是什么?*((DWORD*)(szBuf+BP))=This;中szBuf+BP是什么意思?如果我要发送char*或者char[]类型的数据在这里面要如何转化?