35#define FNV1A_32_OFFSET_BASIS 2166136261ULL
38#define FNV1A_32_PRIME 16777619ULL
41#define FNV1A_32_MASK 0xFFFFFFFFULL
48#define FNV1A_INIT(hash) uint64_t hash = FNV1A_32_OFFSET_BASIS;
51#define FNV1A_32_HASH(hash, byte) \
53 (hash) = (((hash) ^ (uint64_t)(byte)) * FNV1A_32_PRIME) & FNV1A_32_MASK; \
71static inline uint32_t fnv1a_hash_bytes(
const void *data,
size_t len) {
73 if (!data || len == 0) {
78 const unsigned char *bytes = (
const unsigned char *)data;
79 const unsigned char *end = bytes + len;
99static inline uint32_t fnv1a_hash_string(
const char *str) {
106 const unsigned char *p = (
const unsigned char *)str;
152 for (
int i = 0; i < 8; i++) {
unsigned long long uint64_t
#define FNV1A_32_HASH(hash, byte)
FNV-1a 32-bit hash macro for a single byte.
#define FNV1A_32_OFFSET_BASIS
FNV-1a 32-bit offset basis.
#define FNV1A_32_MASK
FNV-1a 32-bit mask.
#define FNV1A_32_PRIME
FNV-1a 32-bit prime.