On Jun 2, 6:25 am, John Machin <sjmac...@lexicon.net> wrote: > On Jun 2, 4:43 pm, johnty <johntyw...@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 -- http://mail.python.org/mailman/listinfo/python-list