【发布时间】:2018-11-14 06:30:48
【问题描述】:
在我的 c++ 程序中,我有一个包含四个 unsigned char 成员的结构
struct msg
{
unsigned char zero; unsigned char one; unsigned char two; unsigned char three;
}
并创建了一个结构数组
msg myMsg[4] = {{0x11,0x22,0xAA,0xCC},{...},{...},{...}};
现在在一个函数中,我想将该数组的索引作为unsigned int返回
unsigned int procMsg(int n){
return myMsg[n]; // of course this is worng
}
类似的值:0xCCAA2211
【问题讨论】:
-
有理由不做
uint32_t ival = myMsg[n].zero | (myMsg[n].one << 8) | (myMsg[n].two << 16) | (myMsg[n].three << 24)吗? -
@ChrisD 非常感谢,实际上这就是答案,我是 c/c++ 新手,甚至不知道要搜索什么
-
酷,我问了这个问题,以防有一些关键的性能原因不使用所有的班次和 ORS。如果有那么@ShafikYaghmour 的答案值得一读,但请注意,您需要确保
struct msg被打包成 4 个字节而没有任何填充(尽管几乎总是这样)。