我有一个赋值,我必须将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。我以粗野的方式提出了这个解决方案。我只是试图以不同的方式打包字节,这种方式有效。但我不确定为什么。
提前谢谢你。
答案 0 :(得分:7)
a
的{{1}} <{1}}
二进制为202
的{{1}} <{1}}
二进制为11001010
的{{1}} <{1}}
二进制为b
的{{1}} <{1}}
254
答案 1 :(得分:0)
u | = b表示u = u OR b 所以,这是“或”运算