How to create the DJB2 hash function for strings in C

2 Answers

0 votes
#include <stdio.h>
 
unsigned int DJB2(char str[], int size) {
    unsigned int hash = 5381;
   
    for (int i = 0; i < size; i++) {
        hash = ((hash << 5) + hash) + str[i];
    }
        
    return hash;
}

int main() {
    char str[] = "c c++";

    unsigned int hash = DJB2(str, strlen(str));

    printf("%d", hash);
}



/*
run:
         
252817665
 
*/ 
  
   

 



answered Oct 8, 2023 by avibootz
0 votes
#include <stdio.h>
#include <ctype.h>

unsigned int DJB2(char str[]) {
    unsigned int hash = 5381;
    int ch;

    while ((ch = *str++)) {
        if (isupper(ch)) {
            ch = ch + 32;
        }

        hash = ((hash << 5) + hash) + ch; 
    }

    return hash;
}

int main() {
    char str[] = "c c++";

    unsigned int hash = DJB2(str);

    printf("%d", hash);
}



/*
run:
         
252817665

*/ 
  
   

 



answered Oct 8, 2023 by avibootz

Related questions

1 answer 127 views
1 answer 145 views
1 answer 136 views
1 answer 121 views
1 answer 158 views
...