On 7/11/2016 3:27 PM, Ian Kelly wrote:
On Mon, Jul 11, 2016 at 12:54 PM, Terry Reedy <tjre...@udel.edu> wrote:
In any case, I think it an improvement to say that '0x00123' has a field
width of 7 rather than a 'precision' of 5.
'{:#07x}'.format(0x123) # specifiy field width
'0x00123'
"%#0.5x" % 0x123 # specify int precision
'0x00123'
It occurs to me now that this does create a challenge if the format is
meant to support negative numbers as well:
'%#0.5x' % -0x123
'-0x00123'
This expands the field from 7 to 8 chars. In running text, this is
alright. In formatted table columns, it is not.
'{:#07x}'.format(-0x123)
'-0x0123'
Multiple alternatives
>>> '{: #08x} {: #08x}'.format(0x123, -0x123)
' 0x00123 -0x00123'
>>> '{:+#08x} {:+#08x}'.format(0x123, -0x123)
'+0x00123 -0x00123'
>>> '{0:#0{1}x} {2:+#0{3}x}'.format(0x123, 7, -0x123, 8)
'0x00123 -0x00123'
>>> n1, n2, w = 0x123, -0x123, 7
>>> '{0:#0{1}x} {2:+#0{3}x}'.format(n1, w+(n1<0), n2, w+(n2<0))
'0x00123 -0x00123'
In running text, I ight go with '+','-' prefix.
--
Terry Jan Reedy
--
https://mail.python.org/mailman/listinfo/python-list