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

时间:2012-01-14 13:04:24

标签: c bitwise-operators arrays

假设我有以下字符数组

 char array[32];

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我很确定你想要这样的东西(再次假设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;