uint32_t hash( uint32_t seed, const char* buffer, int len) { int i; uint32_t result = seed; for (i = len - 1; i > 0; i--) { result ^= ROTATE_INT32(byte_to_int32[*buffer], i); buffer++; } result ^= byte_to_int32[*buffer]; return result; }
uint32_t hash( uint32_t seed, const void* buffer, size_t len) { const uint8_t* b = (uint8_t*) buffer; uint32_t result = seed; size_t i; for (i = len - 1; i > 0; i--) { result ^= ROTATE_INT32(byte_to_int32[*b], i); b++; } result ^= byte_to_int32[*b]; return result; }