我有一个输入字节数组,其大小很大(> 8000字节)。我需要将此字节数组存储在DB中,稍后再获取以进行进一步操作。
问题是,这个字节数组列是唯一的。假设我需要检索此字节数组列上的整个表信息。在进行字节比较时,它变得非常昂贵。因此,考虑存储此字节数组的哈希值只是为了使比较操作更容易。
只是想知道从字节数组生成的哈希值是否唯一,还是有其他方法可以实现这一点。
答案 0 :(得分:2)
如果散列的大小(以字节为单位)小于8000,则无法实现。毕竟,有256 ^ 8000个可能的输入,因此如果散列函数需要是唯一的,那么必须至少有那么多可能的输出。
由于默认的C#哈希码返回int
,它(取决于您的体系结构)是32位或64位(所以4或8个字节),使用默认哈希函数甚至不可能。 (当然,你可以编写自己的哈希函数,但那是毫无意义的。)