假设我有以下字符数组
char array[32];
我想只使用此数组的10个最高有效位作为哈希值。
是否可以对此char数组使用按位运算?
如果是这样,我该怎么做?
答案 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;