2008/8/26 John Fouhy <[EMAIL PROTECTED]>:
> The hex() function (and oct() too) provides you with a different
> string representation from the default.  If you want to change python
> to display integers in hex instead of decimal by default, I can't help
> you.. (well, maybe you could subclass int, and change __repr__ and
> __str__ to return hex strings)

Actually, that was easier than I thought:

class HexInt(int):
    def __repr__(self):
        return hex(self)
    def __str__(self):
        return str(self)
    def __add__(self, other):
        return HexInt(int(self)+int(other))
    def __sub__(self, other):
        return HexInt(int(self)-int(other))
    def __mul__(self, other):
        return HexInt(int(self)*int(other))
    def __div__(self, other):
        return HexInt(int(self)/int(other))

>>> h1 = HexInt(13)
>>> h2 = HexInt(21)
>>> h1, h2
(0xd, 0x15)
>>> h1+h2
0x22
>>> h1-h2
-0x8
>>> h1*h2
0x111
>>> int(h1*h2)
273
>>> h1+16
0x1d

Of course, there's obvious problems if you want to mix this with
floats :-/  And I'm not sure what you'd gain, since as mentioned,
integers are integers, whatever they look like.

-- 
John.
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to