我有一个结构体
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))
------解决方案--------------------
直接内存复制或者类型转换之后直接赋值