22 lines
333 B
C
22 lines
333 B
C
#include <stdio.h>
|
|
|
|
unsigned long djb2(const char *str) {
|
|
unsigned long h = 5381;
|
|
int c;
|
|
|
|
while ((c = *str++)) {
|
|
h = ((h << 5) + h) + c;
|
|
|
|
// Essentially equal to:
|
|
// h = h * 33 + c;
|
|
}
|
|
|
|
return h;
|
|
}
|
|
|
|
int main(void) {
|
|
char *a = "ABC";
|
|
printf("Hash: %ld\n", djb2(a));
|
|
|
|
return 0;
|
|
}
|