Objective-C : Fowler–Noll–Vo (FNV) Hash implementation

Posted by Dough on Stack Overflow See other posts from Stack Overflow or by Dough
Published on 2010-05-18T10:53:50Z Indexed on 2010/05/18 11:40 UTC
Read the original article Hit count: 601

Filed under:
|
|
|

Hi !

I have a HTTP connector in my iPhone project and queries must have a parameter set from the username using the Fowler–Noll–Vo (FNV) Hash.

I have a Java implementation working at this time, this is the code :

long fnv_prime = 0x811C9DC5;
long hash = 0;

for(int i = 0; i < str.length(); i++)
{
    hash *= fnv_prime;
    hash ^= str.charAt(i);
}

Now on the iPhone side, I did this :

int64_t fnv_prime = 0x811C9DC5;
int64_T hash = 0;

for (int i=0; i < [myString length]; i++)
{
    hash *= fnv_prime;
    hash ^= [myString characterAtIndex:i];
}

This script doesn't give me the same result has the Java one.

In first loop, I get this :

hash = 0

hash = 100 (first letter is "d")

hash = 1865261300 (for hash = 100 and fnv_prime = -2128831035 like in Java)

Do someone see something I'm missing ?

Thanks in advance for the help !

© Stack Overflow or respective owner

Related posts about iphone

Related posts about objective-c