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

C/c++ 怎么按位拷贝呢

2012-02-29 
C/c++ 如何按位拷贝呢?我有一个结构体strut st_header{unsigned short ver:2unsigned short ping:1unsgned

C/c++ 如何按位拷贝呢?
我有一个结构体


strut st_header
{
  unsigned short ver:2
  unsigned short ping:1
  unsgned short mark:7 
}

然后从服务器收到数据 char *pdata;
我要吧 pdata 前两位给 ver 第三位给 ping 。。。。
这样 怎么赋值呢?

[解决办法]

C/C++ code
#include <stdio.h>int main(){    struct st_header    {       unsigned short ver;       unsigned short ping;       unsigned short mark;    };    char  pdata[100] = "12345678910";    char  *p = pdata;    int   i = 0;    struct st_header  test = {    0,    0,    0    };    while(i<2 || *p=='\0')    {        test.ver = test.ver*10+(*p-'0');        p++    ;        i++;    }    test.ping = *p-'0';    p++;    i = 0;    while(i<2 || *p=='\0')    {        test.mark = test.mark*10+(*p-'0');        p++    ;        i++ ;    }    printf("ver=%d\nping=%d\nmark=%d\n",test.ver,test.ping,test.mark);    return 0;}
[解决办法]
strut st_header* ph=(strut st_header*)pdata;
okay, you can do...
[解决办法]
一、接收后强制转化
dest_header=(strut st_header)pdata;
二、直接内存复制
memcpy(dest_header,pdata,sizeof(strut st_header))
[解决办法]
直接内存复制或者类型转换之后直接赋值

热点排行