2

让我们获取一个位掩码状态字节数组:

char status[10];

现在,假设我们要从每个状态字节中取出第 3 位并将它们放入一个 int 中,其中 int 的 LSB 是 status[0] bit 3,接下来是 status[1] bit 3,等等。

int foobits = 0;
for( i = 0; i < 10; i++ )
{
    foobits |= (( status[i] & 0x04 ) >> 2) << i;
}

我的问题是:有没有另一种方法来完成这个只涉及一个班次?

编辑:我正在尝试使用 foobits 来包含 status[i] bit #3s 的位数组。

4

1 回答 1

3

你可以这样做

int foobits = 0;
for( i = 0; i < 10; i++ )
{
    foobits |= (status[i] & 0x04) << i;
}
foobits >>= 2;

但为什么要打扰?

“过早的优化是万恶之源。” ——唐纳德·克努斯

于 2012-09-26T18:49:36.907 回答