"Tony Cappellini" <cappy2...@gmail.com> wrote


sys.stdout.write( "\r%-8s ... 0x%08X->0x%08X " % ( descr,
long(startAddr), long(endAddr) )

Why are these displayed with a leading negative sign (between the 0x
and the actual number)- as seen below?

0x-1BFFF400 to 0x-1BFFF000

Because they are negative values and the leading 0x is a sting hard coded before the number. Let me rework the example to make that clearer:

"HEX:%0X" % -29
'HEX:-1D'


I replaced 0x with HEX: and useed a negative decimal number as input. Now you can see my string (HEX:) followed by the formatted hex number with the negative sign correctly placed
before the digits.

The problem is that Pythons string formatting doesn't know about prepending 0x to numbers. You need to use the hex function for that:

hex(-27)
'-0x1b'


So the format string becomes:

"HEX:%s" % hex(-29)
'HEX:-0x1d'

And all is as expected.

HTH,

--
Alan Gauld
Author of the Learn to Program web site
http://www.alan-g.me.uk/


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

Reply via email to