专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

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

发布时间:2011-06-28 16:19:30 文章来源:www.iduyao.cn 采编人员:星星草
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))
------解决方案--------------------
直接内存复制或者类型转换之后直接赋值
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: