我试图哈希一个unsigned long
值,但哈希函数需要一个unsigned char *
,如下面的实现中所示:
unsigned long djb2(unsigned char *key, int n)
{
unsigned long hash = 5381;
int i = 0;
while (i < n-8) {
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
hash = hash * 33 + key[i++];
}
while (i < n)
hash = hash * 33 + key[i++];
return hash;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现我的目标,也许是两者之间的演员?
use*_*961 11
unsigned long x;
unsigned char * p = (unsigned char*)&x;
Run Code Online (Sandbox Code Playgroud)
确保在系统中使用全部4个字节p
,或者unsigned long
系统的长度.