Hash Bloom过滤器-实现哈希函数

Hash Bloom过滤器-实现哈希函数,hash,bloom-filter,Hash,Bloom Filter,这里的问题相当简单。好的,我了解了使用bloom过滤器检查成员是否是集合的一部分、位数组的工作方式、要使用的散列函数的数量等的计算方式的基础知识,但在实现中我没有了解到的是如何将字符映射到字节 例如,假设我对输入1进行散列,输出为8,然后将位8设置为1,以指示该成员是集合的一部分。对于FNV或Jenkins'之类的函数,或者任何返回字符和整数的散列函数,您将如何做到这一点。如果这是一个愚蠢的问题,请毫不犹豫地告诉我,我只是没有实现其中的一些。谢谢 字符串是字符数组(字符数据类型),字符是16位还

这里的问题相当简单。好的,我了解了使用bloom过滤器检查成员是否是集合的一部分、位数组的工作方式、要使用的散列函数的数量等的计算方式的基础知识,但在实现中我没有了解到的是如何将字符映射到字节


例如,假设我对输入1进行散列,输出为8,然后将位8设置为1,以指示该成员是集合的一部分。对于FNV或Jenkins'之类的函数,或者任何返回字符和整数的散列函数,您将如何做到这一点。如果这是一个愚蠢的问题,请毫不犹豫地告诉我,我只是没有实现其中的一些。谢谢

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

// 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 //ord()表示序号,也可以使用类型转换。 变量 str:字符串; b:字节; str=“缩放” b=(字节)str[4]//delphi我会使用b=ord(str[4]); //现在b包含字母m的数字 字符串只是数组,您可以这样使用它们。在java中,您只需要使用String.IndextoByte或类似的东西

如果你感兴趣的话,我已经写了一篇关于Bloom过滤器的教程