布隆过滤器 - 实现散列函数

时间:2014-04-29 00:29:23

标签: hash bloom-filter

这里有一个相当简单的问题。好的,所以我理解使用bloom过滤器来检查成员是否是集合的一部分,bit数组的工作方式,使用的散列函数的方式以及计算,但我在实现中没有得到的是如何将字符映射到字节。

例如,假设我对输入1进行散列并输出为8,然后将bit8设置为1,以指示该成员是该集合的一部分。你会如何使用像FNV或Jenkins这样的函数,或者实际上任何返回字符和整数的散列函数。如果这是一个愚蠢的问题,请不要犹豫告诉我,我只是没有得到一些实施。谢谢!

1 个答案:

答案 0 :(得分:0)

字符串是字符数组(char数据类型),字符是16位或8位,具体取决于语言是使用utf还是ascii。所以在伪代码中它看起来像这样:

    // ord() means ordinal or you could use typecasting.

    var 
     str: string;
     b:byte;
    str = "zoom" 
    b = (byte)str[4]; //delphi i would use b = ord(str[4]);
                   // now b contains the number for the letter m

字符串只是数组,你可以这样使用它们。在java中你只需要使用String.IndextoByte或类似的东西。

我已经写了一篇关于Bloom Filters的教程,如果你有兴趣的话 http://techeffigy.wordpress.com/2014/06/05/bloom-filter-tutorial

相关问题