#include #include #include #define MAX_HASH_SIZE 0x0FFFFFFF unsigned int ELFHash (char* str, unsigned int len) { unsigned int hash = 0; unsigned int x = 0; unsigned int i = 0; for(i = 0; i < len; str++, i++) { hash = (hash << 4) + (*str); if((x = hash & 0xF0000000L) != 0) { hash ^= (x >> 24); hash &= ~x; } } return (hash & MAX_HASH_SIZE); } int main () { printf("elf(a) : %d\n", ELFHash("a", 1)); printf("elf(b) : %d\n", ELFHash("b", 1)); printf("elf(c) : %d\n", ELFHash("c", 1)); printf("elf(d) : %d\n", ELFHash("d", 1)); printf("0x%00000008X : %d\n", MAX_HASH_SIZE, MAX_HASH_SIZE); system("PAUSE"); return 0; }