signed vs unsigned int

Patrick Maupin pmaupin at gmail.com
Fri Jun 4 15:48:47 EDT 2010


On Jun 2, 6:25 am, John Machin <sjmac... at lexicon.net> wrote:
> On Jun 2, 4:43 pm, johnty <johntyw... at gmail.com> wrote:
>
> > i'm reading bytes from a serial port, and storing it into an array.
>
> > each byte represents a signed 8-bit int.
>
> > currently, the code i'm looking at converts them to an unsigned int by
> > doing ord(array[i]). however, what i'd like is to get the _signed_
> > integer value. whats the easiest way to do this?
>
> signed = unsigned if unsigned <= 127 else unsigned - 256

That works, but I prefer not using if/else for things that can be
described in an expression without it.  Other ways of expressing this
include:

signed = (unsigned & 127) - (unsigned & 128)
signed = (unsigned & 127) * 2 - unsigned
signed - unsigned - 2 * (unsigned & 128)

Regards,
Pat



More information about the Python-list mailing list