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