I realize I did a pretty bad job of explaining the problem. The problem is the python version is returning an r that is WAAAAY to big.
Here is an example run through that function in each language: C: u starts at 1050 u += 0xe91aaa35; u is now -384127409 u ^= u >> 16; u is now -384153771 u += u << 8; u is now 56728661 u ^= u >> 4; u is now 56067472 b = (u >> 8) & 0x1ff; b is now 389 a = (u + (u << 2)) >> 19; a is now 534 r = a ^ hash_adjust[b]; r is now 6366 Python: u starts at 1050 u += 0xe91aaa35 u is now 3910839887L rut roh... -- http://mail.python.org/mailman/listinfo/python-list