16 lines
278 B
C
16 lines
278 B
C
#include "fnv.h"
|
|
|
|
#define FNV_PRIME 0x100000001b3ULL
|
|
|
|
uint64_t fnv(const void *buf, uint32_t len, uint64_t hval)
|
|
{
|
|
const uint64_t *ptr = buf;
|
|
const uint64_t *end = (void *) buf + len;
|
|
|
|
while (ptr < end) {
|
|
hval *= FNV_PRIME;
|
|
hval ^= (uint64_t) *ptr++;
|
|
}
|
|
|
|
return hval;
|
|
}
|