I am trying to rewrite some C source code for a poker hand evaluator in Python. Putting aside all of the comments such as just using the C code, or using SWIG, etc. I have been having problems with my Python code not responding the same way as the C version.
C verison: unsigned find_fast(unsigned u) { unsigned a, b, r; u += 0xe91aaa35; u ^= u >> 16; u += u << 8; u ^= u >> 4; b = (u >> 8) & 0x1ff; a = (u + (u << 2)) >> 19; r = a ^ hash_adjust[b]; return r; } my version (Python, hopefully ;)): def find_fast(u): u += 0xe91aaa35 u ^= u >> 16 u += u << 8 u ^= u >> 4 b = (u >> 8) & 0x1ff a = (u + (u << 2)) >> 19 r = a ^ hash_adjust[b] return r As far as I understand the unsigned instructions in C just increase amount of bytes the int can hold, and Python automatically converts to longs which have infinite size when necessary, so I am not sure why I am getting different results. I assume that I am missing something fairly simple here, so help a n00b out if you can :) Thanks in advance, jnb -- http://mail.python.org/mailman/listinfo/python-list