是否可以对char数组进行位掩码

假设我有以下char数组

char array[32]; 

我想只使用此数组的10个最高有效位作为哈希值。

是否可以对此char数组使用按位运算?

如果是这样,我该怎么办?

假设您的实现具有8位char ,并且您在此数组中以big endian存储了256位数字,此处如何访问256位数字的10 msb。

 uint16_t a; a = (array[0] << 2 | (array[1] & 0xC0) >> 6) & 0x3FF; 

我很确定你想要这样的东西(再次假设8位char存储在array大端):

 uint16_t a = (((uint16_t)array[0] & 0xFF) << 2 | ((uint16_t)array[1] & 0xFF) >> 6) & 0x3FF; 

为了打破这一点:

 uint16_t byte0 = (uint16_t)array[0] & 0xFF; uint16_t byte1 = (uint16_t)array[1] & 0xFF; uint16_t a = (byte0 << 2 | byte1 >> 6) & 0x3FF;