数据打包的一点小问题
我客户端是
int len=20;
char *buf=new char[len];
int *p=(int*)buf;
*p=len;
*p++;
char *p1=(char* )p;
const char *temp=str.c_str();
int templen=strlen(temp);
memcpy(p1,temp,templen);
然后把buf ,send出去;
我客户端接受
char *tempchar=new char[20];
recv(sockConn,tempchar,20,0);
int len=0;
int *temp=(int*)tempchar;
len=*temp;
*temp++;
char *p=(char *)temp;
char* mychar=p;
printf("长度:%d,%s\n",len,mychar);
只能打印出 len。。而mychar无法打印出来。。。为什么???????
[解决办法]
- C/C++ code
void HexDump(char *buf,int len) { int i,j,k; char binstr[80]; for (i=0;i<len;i++) { if (0==(i%16)) { sprintf(binstr,"%04x -",i); sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]); } else if (15==(i%16)) { sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]); sprintf(binstr,"%s ",binstr); for (j=i-15;j<=i;j++) { sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.'); } printf("%s\n",binstr); } else { sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]); } } if (0!=(i%16)) { k=16-(i%16); for (j=0;j<k;j++) { sprintf(binstr,"%s ",binstr); } sprintf(binstr,"%s ",binstr); k=16-k; for (j=i-k;j<i;j++) { sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.'); } printf("%s\n",binstr); }}