6.3w+
社区成员
#include "iostream.h"
#include "memory.h"
int nCount = 10;
bool bValid = true;
char Letter = 'p';
char szName[32] = "I Love C++.";
unsigned long dwMyQQ = 11224455;
int ToPackage(char *Buffer, size_t BufferSize)
{
int nRet = 0;
char *p = Buffer;
size_t size = BufferSize;
if (size > sizeof(nCount))
{
memcpy(p, &nCount, sizeof(nCount));
p += sizeof(nCount);
size -= sizeof(nCount);
nRet += sizeof(nCount);
}
if (size > sizeof(bValid))
{
memcpy(p, &bValid, sizeof(bValid));
p += sizeof(bValid);
size -= sizeof(bValid);
nRet += sizeof(bValid);
}
if (size > sizeof(Letter))
{
memcpy(p, &Letter, sizeof(Letter));
p += sizeof(Letter);
size -= sizeof(Letter);
nRet += sizeof(Letter);
}
if (size > sizeof(szName))
{
memcpy(p, &szName, sizeof(szName));
p += sizeof(szName);
size -= sizeof(szName);
nRet += sizeof(szName);
}
if (size > sizeof(dwMyQQ))
{
memcpy(p, &dwMyQQ, sizeof(dwMyQQ));
p += sizeof(dwMyQQ);
size -= sizeof(dwMyQQ);
nRet += sizeof(dwMyQQ);
}
return nRet;
}
int DePackege(char *Buffer, size_t BufferSize)
{
int nRet = 0;
char *p = Buffer;
size_t size = BufferSize;
if (size > sizeof(nCount))
{
memcpy(&nCount, p, sizeof(nCount));
p += sizeof(nCount);
size -= sizeof(nCount);
nRet += sizeof(nCount);
}
if (size > sizeof(bValid))
{
memcpy(&bValid, p, sizeof(bValid));
p += sizeof(bValid);
size -= sizeof(bValid);
nRet += sizeof(bValid);
}
if (size > sizeof(Letter))
{
memcpy(&Letter, p, sizeof(Letter));
p += sizeof(Letter);
size -= sizeof(Letter);
nRet += sizeof(Letter);
}
if (size > sizeof(szName))
{
memcpy(&szName, p, sizeof(szName));
p += sizeof(szName);
size -= sizeof(szName);
nRet += sizeof(szName);
}
if (size > sizeof(dwMyQQ))
{
memcpy(&dwMyQQ, p, sizeof(dwMyQQ));
p += sizeof(dwMyQQ);
size -= sizeof(dwMyQQ);
nRet += sizeof(dwMyQQ);
}
return nRet;
}
int main()
{
cout << "Variables before ToPackage:" << endl;
cout << "nCount:" << nCount << endl;
cout << "bValid:" << bValid << endl;
cout << "Letter:" << Letter << endl;
cout << "szName:" << szName << endl;
cout << "dwMyQQ:" << dwMyQQ << endl;
char buf[1024];
int nWriteByte = ToPackage(buf, sizeof(buf));
cout << "Written bytes:" << nWriteByte << endl;
int nReadByte = DePackege(buf, nWriteByte);
cout << "Variables after DePackege:" << endl;
cout << "nCount:" << nCount << endl;
cout << "bValid:" << bValid << endl;
cout << "Letter:" << Letter << endl;
cout << "szName:" << szName << endl;
cout << "dwMyQQ:" << dwMyQQ << endl;
cout << "Read bytes:" << nReadByte << endl;
return 0;
}