Negative hex to int
James Stroud
jstroud at ucla.edu
Wed Jun 14 20:37:41 EDT 2006
andreas.lydersen at gmail.com wrote:
> Hi!
>
> While communicating with a monitoring unit, I get some hex values
> representing degrees celcius from its probes. The values can be
> something like '19' or '7d'. To convert it to int, I do the following:
> ---------------------------
> Python 2.4.2 (#1, Sep 28 2005, 10:25:47)
> [GCC 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>
>>>>int('7d', 16)
>
> 125
>
>>>>int('19', 16)
>
> 25
>
> ---------------------------
>
> The problem is negative values. If the unit returns the hex value 'e7',
> it means -25, but python says it's 231:
> ---------------------------
>
>>>>int('e7', 16)
>
> 231
> ---------------------------
>
> Does anyone have a clue a to what I need to do?
>
> Thanks!
>
> Andreas Lydersen
>
py> t = lambda x: int(x, 16) - ((int(x, 16) >> 7) * 256)
py> t('e7')
-25
--
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095
http://www.jamesstroud.com/
More information about the Python-list
mailing list