<div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div bgcolor="#ffffff"><div><font size="2" face="Arial"></font> </div>


<div><font size="2" face="Arial">I'm trying to rewrite a c program in python & 
encountered several problems. I have some data structures in my c program like 
below:</font></div>
<div><font size="2" face="Arial"></font> </div>
<div><font size="2" face="Arial">typedef struct</font></div>
<div><font size="2" face="Arial">{</font></div>
<div><font size="2" face="Arial">    unsigned short 
size;</font></div>
<div><font size="2" face="Arial"></font> </div>
<div><font size="2" face="Arial">    unsigned short 
reserved:8;</font></div>
<div><font size="2" face="Arial">    unsigned short 
var_a1:2;</font></div>
<div><font size="2" face="Arial">    unsigned short 
var_a2:2;</font></div>
<div><font size="2" face="Arial">    unsigned short 
var_a3:2;</font></div>
<div><font size="2" face="Arial">    unsigned short 
var_a4:2;</font></div>
<div><font size="2" face="Arial"></font> </div>
<div><font size="2" face="Arial">    unsigned int 
var_a5;</font></div>
<div><font size="2" face="Arial">}structa;</font></div>
<div><font size="2" face="Arial"></font> </div>
<div><font size="2" face="Arial"> </font><font size="2" face="Arial"><font size="2" face="Arial">typedef struct</font></font></div>
<div>
<div><font size="2" face="Arial">{</font></div>
<div><font size="2" face="Arial">    unsigned short 
size;</font></div>
<div><font size="2" face="Arial"></font> </div>
<div><font size="2" face="Arial">    unsigned char 
reserved:4;</font></div>
<div><font size="2" face="Arial">    unsigned char 
var_b1:1;</font></div>
<div><font size="2" face="Arial">    unsigned char 
var_b2:1;</font></div>
<div><font size="2" face="Arial">    unsigned char 
var_b3:1;</font></div>
<div><font size="2" face="Arial">    unsigned char 
var_b4:1;</font></div>
<div><font size="2" face="Arial"></font> </div>
<div><font size="2" face="Arial">    structa 
var_structa;</font></div>
<div><font size="2" face="Arial">}structb;</font></div>
<div> </div>
<div>I tried to code the above in python but only got this far:</div>
<div> </div>
<div>class StructA(object):</div>
<div>    def __init__(self, size=0)</div>
<div>    self.size = size</div>
<div> </div>
<div>class StructB(object):</div>
<div>    def __init__(self, size=0)</div>
<div> </div>
<div>Any equivalent for c data structures & bit fields in python? And 
how do I define var_structa (in structb) in python?</div>
<div> <br></div></div></div></blockquote></div><br>Bitfields are most commonly used for extreme space optimization - i.e. shoving several variables and flags with carefully limited ranges into a single work. In Python you rarely work this way (where such an optimization is warranted, Python isn't the best tool for the job). However, as in your use case, it is sometimes needed in Python in order to communicate with other devices over the network or some other link.<br>

<br>In my work with Python and embedded devices I've found the construct library (<a href="http://construct.wikispaces.com/">http://construct.wikispaces.com/</a>) very useful. It allows to you very easily define complex formats for frames/messages on the bit and byte level. The idea is to use construct to encode and decode messages being sent to an embedded device. It works great.<br>

<br>If you have further questions about this approach, feel free to ask.<br><br>Eli<br><br><br><br><br></div>