porting C code

Roy Smith roy at panix.com
Thu Jan 13 20:12:37 EST 2005

Lucas Raab <pythongnome at hotmail.com> wrote:
> I am currently in the process of porting some C code into Python and am 
> stuck. I don't claim to be the greatest C/C++ programmer; in fact, my 
> skills at C are rudimentary at best. My question is I have the 
> statement: "typedef   unsigned long int  word32" and later on: "word32 
> b[3]" referencing the third bit of the integer. 

Are you sure that's accessing the third bit?  It looks to me like it's 
accessing index 3 (counting from 0) of an array of ints.

> How do I do the same in Python??

In any case, if you're doing bit-fiddling in Python, you've got two 
basic sets of tools.

First, the basic arithmetic operators.  Boolean and (&), or (|), 
left-shift (<<) and right-shift (>>) operators work in Python just like 
they do in C.  Integer constants starting with 0x are in hex, and the 
"%x" format specifier prints integers in hex.  You can play all the 
normal C bit-operation tricks.  To test bit 7, you can do "word & (0x1 
<< 7)".  To set bit 4, use "word |= (0x1 << 4)".

Second, the struct module 
(http://docs.python.org/lib/module-struct.html) is useful for packing 
and unpacking C structures written out into binary files.

More information about the Python-list mailing list