core: implement string hashing using FNV-1a

This commit is contained in:
2024-11-14 21:59:40 +00:00
parent 6c1ae190d3
commit 1bab373547
2 changed files with 25 additions and 0 deletions

16
core/hash.c Normal file
View File

@@ -0,0 +1,16 @@
#include <blue/core/hash.h>
#define FNV1_OFFSET_BASIS 0xcbf29ce484222325
#define FNV1_PRIME 0x100000001b3
uint64_t b_hash_string(const char *s)
{
uint64_t hash = FNV1_OFFSET_BASIS;
for (size_t i = 0; s[i]; i++) {
hash ^= s[i];
hash *= FNV1_PRIME;
}
return hash;
}

View File

@@ -0,0 +1,9 @@
#ifndef BLUELIB_CORE_HASH_H_
#define BLUELIB_CORE_HASH_H_
#include <blue/core/misc.h>
#include <stdint.h>
BLUE_API uint64_t b_hash_string(const char *s);
#endif