unsigned int int64hash(void *k) { char *key = (char *)k; unsigned int hash = 5381; int c; for (c = 0; c < 8; c++) { hash = ((hash << 5) + hash) + key[c]; } return hash; } unsigned long hash(unsigned char *str) { unsigned long hash = 5381; int c; while (c = *str++) hash = ((hash << 5) + hash) + c; /* hash * 33 + c */ return hash; }