如果你读取的数据是 8 个字节长并且真正随机分布,并且你的 hashcode 需要是 32 位,那么怎么样:
uint32_t hashcode(const unsigned char *data) {
uint32_t hash = 0;
hash ^= get_uint32_le(data + 0);
hash ^= get_uint32_le(data + 4);
return hash;
}
uint32_t get_uint32_le(const unsigned char *data) {
uint32_t value = 0;
value |= data[0] << 0;
value |= data[1] << 8;
value |= data[2] << 16;
value |= data[3] << 24;
return value;
}
Run Code Online (Sandbox Code Playgroud)
如果您需要更快的速度,如果您可以保证data始终正确对齐以解释为const uint32_t *.
| 归档时间: |
|
| 查看次数: |
2895 次 |
| 最近记录: |