将unsigned char字节打包成c中的unsigned int

时间:2014-09-17 03:17:08

标签: c bit-shift bits pack

我有一个赋值,我必须将4个unsigned char中的字节打包成unsigned int。

代码如下:

#include <stdio.h>

int main (){
    //Given this
    unsigned char a = 202; 
    unsigned char b = 254; 
    unsigned char c = 186; 
    unsigned char d = 190; 

    //Did this myself
    unsigned int u = a; 
    u <<=8; 
    u |= b; 
    u <<=8; 
    u |= c
    u <<=8; 
    U |= d; 
}

我知道:

u <<=8; 

将u中的位向左移动8.但我对u |= b;之类的行有什么感到困惑?

简单地说,我试图更好地理解我所编写的代码将4个unsigned char中的字节打包成unsigned int。我以粗野的方式提出了这个解决方案。我只是试图以不同的方式打包字节,这种方式有效。但我不确定为什么。

提前谢谢你。

2 个答案:

答案 0 :(得分:7)

二进制为a的{​​{1}} <{1}}

二进制为202的{​​{1}} <{1}}

二进制为11001010的{​​{1}} <{1}}

二进制为b的{​​{1}} <{1}}

254

答案 1 :(得分:0)

u | = b表示u = u OR b 所以,这是“或”运算