该站点对旋转哈希的描述如下。
unsigned rot_hash ( void *key, int len )
{
unsigned char *p = key;
unsigned h = 0;
int i;
for ( i = 0; i < len; i++ )
h = ( h << 4 ) ^ ( h >> 28 ) ^ p[i];
return h;
}
此处返回值为 32 位。但是,我想返回一个 16 位的哈希值。为此,h
在循环中进行如下分配是否正确?考虑h
在这里声明为 16 位整数。
for ( i = 0; i < len; i++ )
h = ( h << 4 ) ^ ( h >> 12 ) ^ p[i];