21ic问答首页 - 结构体按位对齐后的赋值
结构体按位对齐后的赋值
slf1231232021-04-17
本帖最后由 slf123123 于 2021-4-19 09:13 编辑
typedef unsigned long DWORD;
#pragma pack(push)
#pragma pack(1)
typedef struct si
{
DWORD a:4;
DWORD b:7;
DWORD c:3;
DWORD d:1;
DWORD e:3;
DWORD f:14;
}si;
#pragma pack(pop)
如上所示这个结构体对齐后是四个字节
然后
uint8 buff[4];
怎么将buff赋值给整个结构体
struct si su={buff[0],buff[1],buff[2],buff[3]};
这样赋值不行吗
赞0
*(DWORD *)&su = *(DWORD *)buff; // 应该这样赋值。
si_t su = {buff[0], buff[1], buff[2], buff[3]}; // 这样赋值,只有 a, b, c, d 4个元素被赋值,而且只截取 buff[] 的对应的低几 bit
附上完整测试代码:
评论
2021-05-08
赞0
评论
2021-05-07
赞0
评论
2021-05-07
赞0
评论
2021-05-07
赞0
评论
2021-05-07
赞0
评论
2021-05-07
赞0
评论
2021-05-07
赞0
评论
2021-05-07
赞0
评论
2021-05-07
您需要登录后才可以回复 登录 | 注册