谁能帮我看看下面的代码是什么问题?int保存到char[]以及从char []取出int
void __stdcall ZipPackage(char* str,char cServerClient,char cFlag,int nPackageNo,const char* Data)
{
str[0] = cServerClient;//server 1,client 0
str[1] = cFlag;//
int nDataLen = strlen(Data);
//保存nPackageNo到str的2-5字节中
char buf[4] = {0};
*(int*)buf = nPackageNo;
for(int i = 0;i < 4;i++)
str[2+i] = buf[i]; //2-5
//保存nDataLen到str的3-6字节中
ZeroMemory(buf,4);
*(int*)buf = nDataLen;
for(int i = 0;i < 4;i++)
str[6+i] = buf[i]; //6-9
strcat(str,Data);
str[nDataLen + 10] = (nDataLen + 10) % 2 == 0 ? '0':'1';
str[nDataLen + 11] = '\0';
}
下面的代码想从char[]中取出int
char pszBuffer[BUFFERSIZE+11];
char pData[BUFFERSIZE];
ZeroMemory(pszBuffer,sizeof(pszBuffer));
ZipPackage(pszBuffer,'0','0',0,"Mission Complete.");
int nRetPackageNo = 0;
//想取出int nRetPackageNo
for(int i = 0;i < 4;i++)
*(&nRetPackageNo + i) = pszBuffer[2+i];//return package no.
// ShowMessage(nRetPackageNo);
ZeroMemory(pData,sizeof(pData));
strncpy(pData,pszBuffer+10,strlen(pszBuffer)-1);
pData[strlen(pData)] = '\0';
// ShowMessage(pData);
//想取出int nPackageNo
int b = 0;
char d[4] = { 0 };
strncpy(d,pszBuffer+2,4);
memcpy( &b, d, 4 );
// ShowMessage(b);
//想取出int nPackageNo
char buff[sizeof(int)] = {0};
strncpy(buff,pszBuffer+2,4);
int n = 0;
n = *(int*)buff;
// ShowMessage(n);
上面的结果不对,谁能帮忙指出问题所在,谢谢了。