1 unsigned int APHash(char *str) 2 { 3 unsigned int hash = 0; 4 int i; 5 6 for (i=0; *str; i++) 7 { 8 if ((i & 1) == 0) 9 {10 hash ^= ((hash << 7) ^ (*str++) ^ (hash >> 3));11 }12 else13 {14 hash ^= (~((hash << 11) ^ (*str++) ^ (hash >> 5)));15 }16 }17 18 return (hash & 0x7FFFFFFF);19 }