标签:eve real decode init ota 一个 label 高效 similar
是一种哈希函数,采用的是MurMurHash的一种变体,是一种高效低碰撞的非加密型哈希函数。
主要就一个hash接口
uint32_t Hash(const char *data, size_t n, uint32_t seed);
具体实现如下:
uint32_t Hash(const char *data, size_t n, uint32_t seed) {
// Similar to murmur hash
const uint32_t m = 0xc6a4a793;
const uint32_t r = 24;
const char *limit = data + n;
uint32_t h = seed ^ (n * m);
// Pick up four bytes at a time
while (data + 4 <= limit) {
uint32_t w = DecodeFixed32(data);
data += 4;
h += w;
h *= m;
h ^= (h >> 16);
}
// Pick up remaining bytes
switch (limit - data) {
case 3:
h += static_cast<uint8_t>(data[2]) << 16;
FALLTHROUGH_INTENDED;
case 2:
h += static_cast<uint8_t>(data[1]) << 8;
FALLTHROUGH_INTENDED;
case 1:
h += static_cast<uint8_t>(data[0]);
h *= m;
h ^= (h >> r);
break;
}
return h;
}
其中FALLTHROUGH_INTENDED定义如下:
// The FALLTHROUGH_INTENDED macro can be used to annotate implicit fall-through
// between switch labels. The real definition should be provided externally.
// This one is a fallback version for unsupported compilers.
#ifndef FALLTHROUGH_INTENDED
#define FALLTHROUGH_INTENDED do { } while (0)
#endif
标签:eve real decode init ota 一个 label 高效 similar
原文地址:https://www.cnblogs.com/galaxy-hao/p/13072161.html