2014-04-29 24 views
0

这里相当简单的问题。好的,所以我理解使用布隆过滤器来检查成员是否是而不是部分集合,位数组的工作方式,哈希函数的使用方式等的基本知识,但是我在实现中没有得到的是如何将字符映射到字节。布隆过滤器 - 实现哈希函数

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

回答

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或类似的东西。

我已经写了布隆过滤器的教程,如果你有兴趣 http://techeffigy.wordpress.com/2014/06/05/bloom-filter-tutorial