24inline std::uint64_t
fnv1a_64(
const void* data, std::size_t n)
noexcept {
25 constexpr std::uint64_t kFnv64OffsetBasis = 0xCBF29CE484222325ULL;
26 constexpr std::uint64_t kFnv64Prime = 0x100000001B3ULL;
27 std::uint64_t h = kFnv64OffsetBasis;
28 const auto* p =
static_cast<const std::uint8_t*
>(data);
29 for (std::size_t i = 0; i < n; ++i) {
30 h ^=
static_cast<std::uint64_t
>(p[i]);
36inline std::uint64_t
fnv1a_64(std::string_view s)
noexcept {
43 static constexpr char kHex[] =
"0123456789abcdef";
44 std::string out(16,
'0');
45 for (
int i = 15; i >= 0; --i) {
46 out[i] = kHex[h & 0xF];