Help: C char bits operations to python converting

Fredrik Lundh effbot at telia.com
Wed Sep 27 17:28:13 CEST 2000


gangli at msn.com wrote:
> In article <8qst1l$rbj$1 at nnrp1.deja.com>,
>   fredrik at pythonware.com wrote:
> > gangli at msn.com wrote:
> > > > >How could I convert following C statments to Python?
> > > > >   char tmp_ch, tmp_ch0, tmp_ch1;
> > > > >   tmp_ch = 'K' - 'A';          /* -> 10 */
> > > > >   tmp_ch0 = ('N' - 'A') << 4;  /* -> -48 */
> > > > >   tmp_ch1 = tmp_ch+ tmp_ch0;   /* -> -38 */
> > > >
> > > > Use the built-in ord() function.
> > >
> > > It only help convert "tmp_ch = 'K' - 'A';", but not others
> >
> > it sure does.  try again.
> >
> 
> It does not:
> >>> (ord('N') - ord('A')) << 4
> 208

are you trying to solve a real problem, or an is this just
some kind of homework?

(if it's a real problem, note that your C code isn't portable)

anyway, to "cast" a python integer to an 8-bit signed
integer, mask with 255 and subtract 256 from it if it's
larger than 127:

    def char(value):
        value = value & 255
        if value > 127:
            return value - 256
        return value

</F>




More information about the Python-list mailing list