gpt4 book ai didi

c++ - 生成固定大小的哈希

转载 作者:行者123 更新时间:2023-11-30 05:04:12 25 4
gpt4 key购买 nike

我在 cpp 实用程序中使用 std::hash 来生成字符串的散列。我的要求是生成 11 位数字的固定大小哈希。散列函数不需要很大就不会发生冲突。我唯一的要求是生成 11 位数字的固定大小哈希。任何输入都很好,我也可以使用一些自定义哈希函数。

#include <iostream>
#include <string>
#include <functional>
#include <iomanip>
#include <unordered_set>
int main()
{
std::hash<std::string> hash_fn;

std::string s1 = "Stand back! I've got jimmies!";
size_t hash1 = hash_fn(s1);
std::cout << hash1 << '\n'; // OUTPUT: 3544599705012401047

s1 = "h";
hash1 = hash_fn(s1);
std::cout << hash1 << '\n'; // OUTPUT: 11539147918811572172

return 1;
}

最佳答案

很简单,你可以对结果取模:

size_t fix_11digits(size_t n) { return n % 100000000000LU; }

用法:

size_t hash1 = fix_11digits(hash_fn(s1));

编辑:

如果您想获取哈希的实际字符串,请注意前导零:

std::ostringstream ss;
ss << std::setw(11) << std::setfill('0') << hash1;
std::string s{ss.str()};

关于c++ - 生成固定大小的哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49026756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com