读书人

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

发布时间: 2012-02-29 16:44:11 作者: rapoo

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))
[解决办法]
直接内存复制或者类型转换之后直接赋值

读书人网 >C语言

热点推荐