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

Reply via email to