gpt4 book ai didi

c# - 如何在 .Net 中的唯一字符串集合中创建有保证的唯一哈希值?

转载 作者:太空宇宙 更新时间:2023-11-03 19:45:30 24 4
gpt4 key购买 nike

我正在寻找有关查找或创建要在 .Net C# 中使用的哈希算法的建议。

我有一个数据库中的列集合。表中列的组合保证产生独特的字符串。

考虑:

String Column1 = "StringA";
String Column2 = "StringB";
String Column3 = "StringC";

我将列连接成一个字符串:

String ColumnKey = Column1 + Column2 + Column3;

目前我正在使用字符串类中内置的 .Net C# 哈希函数。

int hashKey = ColumnKey.GetHashCode();

经过一些阅读,我的理解是(虽然概率很低)这个算法不保证唯一性。据我了解,此函数可能会在不同版本的 .Net Framework 中对同一字符串产生不同的结果。

我正在寻找另一种哈希算法来保证唯一性并在不同版本的 .Net 中产生一致的结果。

有人可以帮助我朝着正确的方向开始吗?

最佳答案

这是不可能的。一个 int 有 2^32 个不同的值,而一个只有几个字符长的字符串有比这更多的可能值。因此,没有任何哈希算法可以保证每个字符串的值都是唯一的。

参见鸽子洞原则。 https://en.wikipedia.org/wiki/Pigeonhole_principle .

如果您希望每个版本的 .Net 都有保证的哈希值,请自行实现哈希值。 A fast hash function for string in C# 给出了几个例子。我会把它放在字符串的扩展方法中。

关于c# - 如何在 .Net 中的唯一字符串集合中创建有保证的唯一哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46306216/

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