gpt4 book ai didi

c# - 根据任何给定的字符串生成整数(没有 GetHashCode)

转载 作者:可可西里 更新时间:2023-11-01 08:18:44 25 4
gpt4 key购买 nike

我正在尝试编写一个方法来根据任何给定的字符串生成一个整数。在 2 个相同的字符串上调用此方法时,我需要该方法两次生成完全相同的整数。

我尝试使用 .GetHasCode() 但是,一旦我将项目移至另一台机器,这是非常不可靠的,因为 GetHasCode() 为同一字符串返回不同的值

碰撞率非常低也很重要。到目前为止,我编写的自定义方法仅在几十万条记录后就会产生冲突。

散列值必须是一个整数。字符串哈希值(如 md5)会在速度和加载开销方面削弱我的项目。

整数散列正用于执行极其快速的文本搜索,我的工作非常出色,但是它目前依赖于 .GetHasCode() 并且在涉及多台机器时不起作用。

任何见解都将不胜感激。

最佳答案

MD5 哈希返回一个可以转换为整数的字节数组:

var mystring = "abcd";
MD5 md5Hasher = MD5.Create();
var hashed = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(mystring));
var ivalue = BitConverter.ToInt32(hashed, 0);

当然,您正在从 128 位散列转换为 32 位 int,因此会丢失一些信息,这会增加发生冲突的可能性。您可以尝试将第二个参数调整为 ToInt32,以查看 MD5 哈希的任何特定范围是否比您的数据的其他范围产生更少的冲突。

关于c# - 根据任何给定的字符串生成整数(没有 GetHashCode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26870267/

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