首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

数据打包的一点小疑点

2012-08-16 
数据打包的一点小问题我客户端是int len20char *bufnew char[len]int *p(int*)buf*plen*p++char

数据打包的一点小问题
我客户端是
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);    }} 

热点排行