c# - .Net Core 中 BitArray 的 HashCode
问题描述
您能否推荐一种在 C# .Net Core 3.1 中为大小为 N > 1k 的 BitArray 生成哈希码的快速方法?
我环顾四周,找到了一些答案,但特定于 64 位以下和大约十年前的场景。到目前为止,我拥有的少数候选人是:
转换为字符串并使用 GetHashCode()。我有点担心这里的内存和速度
将我的 BitArray 拆分为 64 位,将它们转换为 long,调用 GetHasCode() 然后将它们的哈希与
unchecked
{
int hash = 17;
hash = hash * 31 + firstLong.GetHashCode();
hash = hash * 31 + secondLong.GetHashCode();
// etc
return hash;
}
我不确定如何有效地将我的 BitArray 拆分为 long 并且它在这里也分配了许多对象
- 从 C# 7 开始使用值元组功能: (myBitArray).GetHashCode(); 老实说,我不确定它是如何工作的,但它似乎只在堆栈上工作
解决方案
推荐阅读
- ignite - Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.CacheEntryFilterApply 崩溃
- angular - 猫头鹰日期选择器正在倾斜侧边栏菜单
- php - 如何使用 Mailgun (PHP) 转发图片附件?
- javascript - 如何计算字符串中单词的频率
- amazon-s3 - Kafka 连接 s3 存储桶文件夹
- python - StratifiedShuffleSplit 的奇怪结果
- java - 查找字符串的指数
- excel-formula - Excel CountIfs 多个条件与范围或条件与单元格引用
- excel - 使用 if then 语句键入不匹配错误
- android - Android默认键盘的自定义键