使用数组中的值创建字节位掩码

时间:2018-01-16 11:29:30

标签: c arrays byte bitmask

我必须在C中创建一个Byte掩码。 我有一个数组:

myArray [0] - 连续掩码第一位索引

myArray [1] - 连续掩码最后一位索引

连续掩码表示带有1的位。字节中的其余位是零。

示例:myArray [0] = 1且myArray [1] = 2所以我的字节掩码应为:00000110

myArray值可能不同,因此掩码不同。 我将在另一个Byte(使用和/或/ xor操作)上使用此掩码来实现所需的结果。

您能否提供一个简单的C语言代码来创建这样的掩码?

2 个答案:

答案 0 :(得分:2)

((1 << (myArray[1] -myArray[0] +1)) -1) << myArray[0]

答案 1 :(得分:0)

一个想法是首先使用第二个数字将所有位设置为该点,然后使用第一个数字清除下面的位。

unsigned char mask = ((1 << (myArray[1] + 1)) - 1) & ~((1 << myArray[0]) - 1)

使用示例中的值,((1 << (myArray[1] + 1)) - 1)将为((1 << (2 + 1)) - 1) 00000111。后半部分评估为~((1 << 1) - 1) 11111110。因此,最终结果00000111 & 1111111000000110