在C ++中将位打包成一个整数

时间:2014-11-03 15:15:18

标签: c++ c bit-manipulation

我想将一个整数的最低两个字节打包成另一个整数,卡在此

for ( int i = 0; i < 8 ; i ++){
         if ((bitmask & ( 1 << i)))
             result |= 1 >> i;
     }

2 个答案:

答案 0 :(得分:4)

与Endian无关的解决方案:

x = ((y >> 0) & 0xFF) |
    ((y >> 8) & 0xFF);

答案 1 :(得分:1)

如果我理解正确,那么应该有足够的解决方案:

another_integer = first_integer & 0xFFFF // which is 65536, which is 2^16 so 0000000011111111 binary (for 4 byte integer)

通过使用简单的AND掩码,您可以将first_integer的两个较低字节的值分配给another_integer:

0101110011101010
0000000011111111 AND
----------------
0000000011101010