我有这个语法的一些问题.有人可以向我解释这个C函数在做什么吗?
unsigned long protodec_henten(int from, int size, unsigned char *frame)
{
int i = 0;
unsigned long tmp = 0;
for (i = 0; i < size; i++)
tmp |= (frame[from + i]) << (size - 1 - i);
return tmp;
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
Jar*_*Par 15
我猜你在将以下行称为具有混乱语法的行.
tmp |= (frame[from + i]) << (size - 1 - i);
Run Code Online (Sandbox Code Playgroud)
让我们打破这个
其他已经描述过的每一行,所以我刚才添加的功能是什么呢.您可以想象在具有不同位置的"堆栈"上的frame位置(from)和(from+size)之间的字节.第一个字节将放在左侧.
bits from: tmp: | + + |(LSB-side of tmp)
frame[from]: ---+----
frame[from+1]: -----+--
frame[from+2]: -+------
...
Run Code Online (Sandbox Code Playgroud)
现在,如果"下方"中的任何字节在相关位置设置了位,则tmp设置为位.