/
githubmirror
/
bitcoin
Обзор
Документация
Войти
/
githubmirror
/
bitcoin
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/leveldb/util/hash.cc
46 строк
1 KB
fanquake
Update leveldb subtree to latest upstream
28 май 2026, 11:34
Не верифицирован
28 май 2026, 11:34
5fe0615
Код
Авторство
О чём код?
// Copyright (c) 2011 The LevelDB Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. See the AUTHORS file for names of contributors. #include "util/hash.h" #include <string.h> #include "util/coding.h" namespace leveldb { 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 (limit - data >= 4) { 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]]; case 2: h += static_cast<uint8_t>(data[1]) << 8; [[fallthrough]]; case 1: h += static_cast<uint8_t>(data[0]); h *= m; h ^= (h >> r); break; } return h; } } // namespace leveldb