2014-04-29 4 views
0

question assez simple ici. Ok, donc je comprends les bases de l'utilisation d'un filtre bloom pour vérifier si un membre est pas partie d'un ensemble, la façon dont le tableau de bits fonctionne, la façon dont le nombre de fonctions de hachage à utiliser et etc. sont calculés, mais ce que je ne comprends pas dans la mise en œuvre, c'est comment vous mappez les caractères en octets. Par exemple, disons que je hachage l'entrée 1 et que la sortie est 8, puis je mets bit8 à 1, pour indiquer que le membre fait partie de l'ensemble. Comment feriez-vous cela avec des fonctions comme FNV ou Jenkins, ou vraiment n'importe quelle fonction de hachage qui renvoie des caractères avec des entiers. Si c'est une question stupide, n'hésitez pas à me le dire, je ne suis pas en train d'en mettre en application. Merci!Bloom Filtres - Mise en œuvre des fonctions de hachage

Répondre

0

Les chaînes sont un tableau de caractères (type de données char) et les caractères sont 16 bits ou 8 bits selon que la langue utilise utf ou ascii. donc dans le code psuedo il ressembler à ceci:

 
    // 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 

Les chaînes ne sont que des tableaux et vous pouvez les utiliser comme si. en Java, vous utiliseriez simplement String.IndextoByte ou quelque chose de similaire.

J'ai écrit un tutoriel sur Filtres Bloom, Si vous êtes intéressé http://techeffigy.wordpress.com/2014/06/05/bloom-filter-tutorial

Questions connexes