首页 > 解决方案 > .Net Core 中 BitArray 的 HashCode

问题描述

您能否推荐一种在 C# .Net Core 3.1 中为大小为 N > 1k 的 BitArray 生成哈希码的快速方法?

我环顾四周,找到了一些答案,但特定于 64 位以下和大约十年前的场景。到目前为止,我拥有的少数候选人是:

  1. 转换为字符串并使用 GetHashCode()。我有点担心这里的内存和速度

  2. 将我的 BitArray 拆分为 64 位,将它们转换为 long,调用 GetHasCode() 然后将它们的哈希与

unchecked
{
    int hash = 17;
    hash = hash * 31 + firstLong.GetHashCode();
    hash = hash * 31 + secondLong.GetHashCode();
    // etc
    return hash;
}

我不确定如何有效地将我的 BitArray 拆分为 long 并且它在这里也分配了许多对象

  1. 从 C# 7 开始使用值元组功能: (myBitArray).GetHashCode(); 老实说,我不确定它是如何工作的,但它似乎只在堆栈上工作

标签: c#.net-corehash

解决方案


推荐阅读